jQuery AJAX 请求事件 - 完成、失败、成功
jQuery AJAX request events - done,fail,success
我有这样的代码
var ajaxrequest = $.ajax({
type: "POST",
dataType: "json",
url: "xy.php",
data: {
action : "read"
}
}).fail(function(){
//something to do when ajaxreq fails
}).done(function(data){
//something to do when ajaxreq is done
});
一切正常。我的问题是为什么这不起作用:
var ajaxrequest = $.ajax({
type: "POST",
dataType: "json",
url: "n3_vaje_api.php", //Relative or absolute path to response.php file
data: {
action : "read",
},
fail:function(){
//something to do when ajaxreq fails
},
done:function(data){
//something to do when ajaxreq is done
}
});
fail和done只是例子,complete如果在里面使用也不起作用。但是像这样在外面使用它:
ajaxrequest.complete(f(){});
工作正常...我知道我应该使用 success 而不是完成,但这不是我的意思。
怎么回事?
如果你想使用你的第二个选项,你需要使用成功和错误是你需要使用的方法
这是 ajax 没有承诺的请求示例,您在其中获得成功和错误函数作为参数
$.ajax({url:"demo_test.txt"
,error : function (xhr,status,error)
{ //alert error}
,success:function(result){
$("#div1").html(result);
}});
在第一个选项中,您通过 ajax 请求使用 promise 对象 return,这就是您完成并失败方法的原因。
这是 promise 对象的示例,在下面的示例中请求是 promise 对象
var request = $.ajax({
url: "script.php",
type: "POST",
data: { id : menuId },
dataType: "html"
});
request.done(function( msg ) {
$( "#log" ).html( msg );
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
您可以简单地使用 $.post 而不是 $.ajax 和 json 作为第四个参数。
$.post("n3_vaje_api.php", {action : "read"}, function(response) {
// Do something with the request
}, 'json')
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});
弃用通知:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调已从 jQuery 3.0 开始删除。您可以改用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()。
我有这样的代码
var ajaxrequest = $.ajax({
type: "POST",
dataType: "json",
url: "xy.php",
data: {
action : "read"
}
}).fail(function(){
//something to do when ajaxreq fails
}).done(function(data){
//something to do when ajaxreq is done
});
一切正常。我的问题是为什么这不起作用:
var ajaxrequest = $.ajax({
type: "POST",
dataType: "json",
url: "n3_vaje_api.php", //Relative or absolute path to response.php file
data: {
action : "read",
},
fail:function(){
//something to do when ajaxreq fails
},
done:function(data){
//something to do when ajaxreq is done
}
});
fail和done只是例子,complete如果在里面使用也不起作用。但是像这样在外面使用它:
ajaxrequest.complete(f(){});
工作正常...我知道我应该使用 success 而不是完成,但这不是我的意思。 怎么回事?
如果你想使用你的第二个选项,你需要使用成功和错误是你需要使用的方法
这是 ajax 没有承诺的请求示例,您在其中获得成功和错误函数作为参数
$.ajax({url:"demo_test.txt"
,error : function (xhr,status,error)
{ //alert error}
,success:function(result){
$("#div1").html(result);
}});
在第一个选项中,您通过 ajax 请求使用 promise 对象 return,这就是您完成并失败方法的原因。
这是 promise 对象的示例,在下面的示例中请求是 promise 对象
var request = $.ajax({
url: "script.php",
type: "POST",
data: { id : menuId },
dataType: "html"
});
request.done(function( msg ) {
$( "#log" ).html( msg );
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
您可以简单地使用 $.post 而不是 $.ajax 和 json 作为第四个参数。
$.post("n3_vaje_api.php", {action : "read"}, function(response) {
// Do something with the request
}, 'json')
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});
弃用通知:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调已从 jQuery 3.0 开始删除。您可以改用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()。