这是我的代码:
function ajaxRequest(value, path, website){
window[website] = $.ajax({
url : path,
type : 'GET',
data: { "name": value,
"_token": $('meta[name="_token"]').attr('content')
},
beforeSend: function(){
if(window[website] != null) {
window[website].abort();
}
},
success: function (people) {
return [status, people];
},
error: function (jqXHR, textStatus, errorThrown) {
return [status, textStatus];
},
timeout: 15000
});
}
如您所见,它是一个发送ajax请求的函数。我称之为:
var res = ajaxRequest('Jack', 'search/twitter', 'twitter');
console.log(res);
它返回:
为什么我在控制台中看不到结果?注意到如果我将ajax发送出函数,我可以在控制台中看到结果。 (结果是数据数组)
我该如何解决问题?
答案 0 :(得分:1)
首先,你没有从函数中返回任何内容,默认是未定义的。
其次,您的res
不会是您的ajax调用的结果。由于ajax是异步调用,因此只能在函数success
或error
中访问您获得的结果。
见这里。你不能归还这个。您需要根据需要在此处编写的data
实现的所有其他逻辑。
success: function (people) {
// Your logic here
},
答案 1 :(得分:1)
function ajaxRequest(value, path, website){
return new Promise(function (resolve, reject) {
window[website] = $.ajax({
url : path,
type : 'GET',
data: { "name": value,
"_token": $('meta[name="_token"]').attr('content')
},
beforeSend: function(){
if(window[website] != null) {
window[website].abort();
}
},
success: function (people) {
resolve([status, people]);
},
error: function (jqXHR, textStatus, errorThrown) {
reject([status, textStatus]);
},
timeout: 15000
});
});
}
然后这样做,得到结果:
ajaxRequest('Jack', 'search/twitter', 'twitter').then(function(res) { console.log(res)}, function(err){console.log(err)})`;