我正在使用jquery创建一个简单的ajax请求。下面是我的ajax功能。
var makeJqueryAjaxRequest = function(arrParam) {
var request = $.ajax({
url : arrParam['url'],
async: false,
type: arrParam['type'],
data: arrParam['data'],
dataType: arrParam['data_type'],
success: function(data) {
if(data){
return data;
}
}
});
}
这是我的函数调用:
var items = {
"type" : 'POST',
"url" : ajaxGetUrl,
"data" : arrParam['data'],
"data_type" : 'html'
};
var msg = makeJqueryAjaxRequest(items);
现在不知道为什么我的makeJqueryAjaxRequest函数总是返回null值。如果我成功提醒数据:我的数据是完美的。但是当我尝试返回时,它会给我空值
答案 0 :(得分:8)
您无法从异步回调函数返回值。
因为success
是一个async
回调,当ajax Event(success in this case)触发时,jQuery会调用该回调。因此,从这些函数返回一些内容将不会产生任何影响,因为它们将返回到jQuery代码。
您可以使用以下
var makeJqueryAjaxRequest = function(arrParam) {
var request = $.ajax({
url : arrParam['url'],
async: false,
type: arrParam['type'],
data: arrParam['data'],
dataType: arrParam['data_type']
});
return request;
}
然后做
makeJqueryAjaxRequest(items).done(function(data){
if(data){
var msg = data;
// do whatever you like with msg now
}
});
备用回调方法:
var makeJqueryAjaxRequest = function(arrParam,callback) {
var request = $.ajax({
url : arrParam['url'],
async: false,
type: arrParam['type'],
data: arrParam['data'],
dataType: arrParam['data_type'],
success: function(data) {
if(data){
callback(data);
}
}
});
}
然后像
一样使用它 makeJqueryAjaxRequest(items,function(data){
// do whatever you like with data
});
Doc $.ajax()
注意
使用这些方法中的任何一种async: false
都不是必需的。你可以删除它。正如医生说的那样
从jQuery 1.8开始,不推荐使用 async:false