Javascript 如何将post ajax请求的值存储到var?

Javascript 如何将post ajax请求的值存储到var?,javascript,jquery,html,ajax,api,Javascript,Jquery,Html,Ajax,Api,我试图在ajax中调用一个api,并将输出存储在一个var中,然后将输出显示给用户 到目前为止,我已经尝试了以下两种方法: var Fake = $.ajax({async:false, url:'http://9dbad321.ngrok.io/output', type:'post', data:{'query': 'sure'}, dataType:"J

我试图在ajax中调用一个api,并将输出存储在一个var中,然后将输出显示给用户

到目前为止,我已经尝试了以下两种方法:

var Fake = $.ajax({async:false, url:'http://9dbad321.ngrok.io/output',
                       type:'post',
                       data:{'query': 'sure'},
                       dataType:"JSON"
                       }).responseJSON;

我的js代码如下所示:

var $messages = $('.messages-content'),
    d, h, m,
    i = 0;

$(window).load(function() {
  $messages.mCustomScrollbar();
  setTimeout(function() {
    fakeMessage();
  }, 100);
});

function updateScrollbar() {
  $messages.mCustomScrollbar("update").mCustomScrollbar('scrollTo', 'bottom', {
    scrollInertia: 10,
    timeout: 0
  });
}

function setDate(){
  d = new Date()
  if (m != d.getMinutes()) {
    m = d.getMinutes();
    $('<div class="timestamp">' + d.getHours() + ':' + m + '</div>').appendTo($('.message:last'));
  }
}

function insertMessage() {
  msg = $('.message-input').val();
  if ($.trim(msg) == '') {
    return false;
  }
  $('<div class="message message-personal">' + msg + '</div>').appendTo($('.mCSB_container')).addClass('new');
  setDate();
  $('.message-input').val(null);
  updateScrollbar();
  setTimeout(function() {
    fakeMessage();
  }, 1000 + (Math.random() * 20) * 100);
}

$('.message-submit').click(function() {
  insertMessage();
});

$(window).on('keydown', function(e) {
  if (e.which == 13) {
    insertMessage();
    return false;
  }
})


var Fake = 'store api output here'

function useReturnData(data){
    myvar = data;
    console.log(myvar);
};



// var Fake = '<img src=" https://media.tumblr.com/78a9d3eae59a2a3ed8531b482bdc5a4f/tumblr_inline_mgzkontwjP1rxsw83.gif"></img> <b><center>Happy Birthday! :) </b><br><br>So What are your plans for today?'

function fakeMessage() {
  if ($('.message-input').val() != '') {
    return false;
  }
  $('<div class="message loading new"><figure class="avatar"><img src="https://images.ly/2iAb20v" /></figure><span></span></div>').appendTo($('.mCSB_container'));
  updateScrollbar();

  setTimeout(function() {
    $('.message.loading').remove();
    $('<div class="message new"><figure class="avatar"><img src="https://images.ly/2iAb20v" /></figure>' + Fake + '</div>').appendTo($('.mCSB_container')).addClass('new');
    setDate();
    updateScrollbar();
    i++;
  }, 1000 + (Math.random() * 20) * 100);

}
我是jQuery和Ajax新手,我正在尝试从Ajax调用postapi,并以字符串格式将输出存储在一个var中


提前谢谢

我不确定哪一个是你的问题。。如果您希望以异步方式处理ajax的响应,那么您应该了解回调的概念,当解析ajax时,您将在其中一个

成功:函数(数据){console.log(数据)} 或 错误:函数(错误){console.log(错误)}

这里有$ajax的官方文档,


希望它有帮助

好的,您可以像这样调用异步方法:

var $messages = $('.messages-content'),
    d, h, m,
    i = 0;

$(window).load(function() {
  $messages.mCustomScrollbar();
  setTimeout(function() {
    fakeMessage();
  }, 100);
});

function updateScrollbar() {
  $messages.mCustomScrollbar("update").mCustomScrollbar('scrollTo', 'bottom', {
    scrollInertia: 10,
    timeout: 0
  });
}

function setDate(){
  d = new Date()
  if (m != d.getMinutes()) {
    m = d.getMinutes();
    $('<div class="timestamp">' + d.getHours() + ':' + m + '</div>').appendTo($('.message:last'));
  }
}

function insertMessage() {
  msg = $('.message-input').val();
  if ($.trim(msg) == '') {
    return false;
  }
  $('<div class="message message-personal">' + msg + '</div>').appendTo($('.mCSB_container')).addClass('new');
  setDate();
  $('.message-input').val(null);
  updateScrollbar();
  setTimeout(function() {
    fakeMessage();
  }, 1000 + (Math.random() * 20) * 100);
}

$('.message-submit').click(function() {
  insertMessage();
});

$(window).on('keydown', function(e) {
  if (e.which == 13) {
    insertMessage();
    return false;
  }
})


var Fake = 'store api output here'

function useReturnData(data){
    myvar = data;
    console.log(myvar);
};



// var Fake = '<img src=" https://media.tumblr.com/78a9d3eae59a2a3ed8531b482bdc5a4f/tumblr_inline_mgzkontwjP1rxsw83.gif"></img> <b><center>Happy Birthday! :) </b><br><br>So What are your plans for today?'

function fakeMessage() {
  if ($('.message-input').val() != '') {
    return false;
  }
  $('<div class="message loading new"><figure class="avatar"><img src="https://images.ly/2iAb20v" /></figure><span></span></div>').appendTo($('.mCSB_container'));
  updateScrollbar();

  setTimeout(function() {
    $('.message.loading').remove();
    $('<div class="message new"><figure class="avatar"><img src="https://images.ly/2iAb20v" /></figure>' + Fake + '</div>').appendTo($('.mCSB_container')).addClass('new');
    setDate();
    updateScrollbar();
    i++;
  }, 1000 + (Math.random() * 20) * 100);

}
const myPromise=function(){
//它返回承诺(必须解决/拒绝,或等待/捕获)
//或者改为使用回调(首先搜索回调地狱)
返回$.ajax({
类型:'post',
网址:'http://9dbad321.ngrok.io/output', 
数据:{'query':'sure'},
数据类型:'jsonp'});
}
const getFake=异步函数(){
试一试{
var fake=等待我的承诺();
}捕获(错误){
日志(“出现故障”,错误)
}
}

var fake=getFake()我已经更新了问题,请检查。我只想从ajax调用一个post api,然后将输出存储在一个变量中。值得一提的是,
async/await
仅适用于支持es6的浏览器。这是否回答了您的问题?
API type : POST
data     : {'query': 'sure'}
url (dummy) : http://9dbad321.ngrok.io/output