如何return数据在jQueryAjax?
How to return data in jQuery Ajax?
假设我有一个简单的函数:
function test(url){
var AjaxCall = $.ajax({
type: GET,
url: url,
data: {},
success: function(data,status,xhr){
return xhr
},
error: function(xhr,e){
return xhr
}
});
if(xhr.status === 200)console.log('success');
}
所以我想要的是处理函数内部的错误,而不是在调用它并在调用中添加回调以处理这些错误之后,例如,这可能吗?
如果您使用的 jQuery 低于 1.8,是的,您可以通过设置 async = false
function test(url){
var AjaxCall = $.ajax({
type: GET,
url: url,
async : false
data: {},
success: function(data,status,xhr){
return xhr
},
error: function(xhr,e){
return xhr
}
});
}
请注意,这已被弃用,并且有充分的理由
As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is
deprecated; you must use the success/error/complete callback options
instead of the corresponding methods of the jqXHR object such as
jqXHR.done() or the deprecated jqXHR.success().
http://api.jquery.com/jquery.ajax/
function test(url){
var AjaxCall = $.ajax({
type: GET,
url: url,
data: {},
complete: function(xhr, status){
if(xhr.status === 200)console.log('success');
}
});
}
不,您不能使用此方法 return 来自函数的值。这不是异步的工作方式。如果你想 return,你必须设置 async = false,这样就违背了使用 ajax.
的目的。
假设我有一个简单的函数:
function test(url){
var AjaxCall = $.ajax({
type: GET,
url: url,
data: {},
success: function(data,status,xhr){
return xhr
},
error: function(xhr,e){
return xhr
}
});
if(xhr.status === 200)console.log('success');
}
所以我想要的是处理函数内部的错误,而不是在调用它并在调用中添加回调以处理这些错误之后,例如,这可能吗?
如果您使用的 jQuery 低于 1.8,是的,您可以通过设置 async = false
function test(url){
var AjaxCall = $.ajax({
type: GET,
url: url,
async : false
data: {},
success: function(data,status,xhr){
return xhr
},
error: function(xhr,e){
return xhr
}
});
}
请注意,这已被弃用,并且有充分的理由
As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success().
http://api.jquery.com/jquery.ajax/
function test(url){
var AjaxCall = $.ajax({
type: GET,
url: url,
data: {},
complete: function(xhr, status){
if(xhr.status === 200)console.log('success');
}
});
}
不,您不能使用此方法 return 来自函数的值。这不是异步的工作方式。如果你想 return,你必须设置 async = false,这样就违背了使用 ajax.
的目的。