如何定义ajax $ .post的成功和失败功能?
答案 0 :(得分:111)
文档在这里:http://docs.jquery.com/Ajax/jQuery.ajax
但是,总而言之,ajax调用需要一堆选项。你正在寻找的是错误和成功。
你会这样称呼:
$.ajax({
url: 'mypage.html',
success: function(){
alert('success');
},
error: function(){
alert('failure');
}
});
我已经证明了成功和错误函数不带参数,但它们可以接收参数。
错误函数可以带三个参数:XMLHttpRequest,textStatus和errorThrown。
success函数可以有两个参数:data和textStatus。您请求的页面将位于数据参数中。
答案 1 :(得分:45)
如果您需要失败功能,则不能使用$ .get或$ .post函数;你需要直接调用$ .ajax函数。您传递了一个可以具有“成功”和“错误”回调的选项对象。
而不是:
$.post("/post/url.php", parameters, successFunction);
你会用这个:
$.ajax({
url: "/post/url.php",
type: "POST",
data: parameters,
success: successFunction,
error: errorFunction
});
还有很多其他选择。 The documentation列出了所有可用选项。
答案 2 :(得分:31)
使用jQuery 1.8及更高版本,应使用以下内容:
var request = $.ajax({
type: 'POST',
url: 'mmm.php',
data: { abc: "abcdefghijklmnopqrstuvwxyz" } })
.done(function(data) { alert("success"+data.slice(0, 100)); })
.fail(function() { alert("error"); })
.always(function() { alert("complete"); });
将文档检查为@hitautodestruct说明。
答案 3 :(得分:2)
我在想,为什么他们没有在jquery中提供,所以我在jquery文件中做了一些更改,这里是更改的代码块:
原始代码块:
post: function( url, data, callback, type ) {
// shift arguments if data argument was omited
if ( jQuery.isFunction( data ) ) {
type = type || callback;
callback = data;
data = {};
}
return jQuery.ajax({
type: "POST",
url: url,
data: data,
success: callback,
dataType: type
});
更改了代码块:
post: function (url, data, callback, failcallback, type) {
if (type === undefined || type === null) {
if (!jQuery.isFunction(failcallback)) {
type=failcallback
}
else if (!jQuery.isFunction(callback)) {
type = callback
}
}
if (jQuery.isFunction(data) && jQuery.isFunction(callback)) {
failcallback = callback;
}
// shift arguments if data argument was omited
if (jQuery.isFunction(data)) {
type = type || callback;
callback = data;
data = {};
}
return jQuery.ajax({
type: "POST",
url: url,
data: data,
success: callback,
error:failcallback,
dataType: type
});
},
这应该有助于试图在jquery中捕获$ .Post上的错误。
更新: 或者还有另一种方法:
$.post(url,{},function(res){
//To do write if call is successful
}).error(function(p1,p2,p3){
//To do Write if call is failed
});
答案 4 :(得分:0)
这种风格也是可能的:
$.get("mypage.html")
.done(function(result){
alert("done. read "+result.length+" characters.");
})
.fail(function(jqXHR, textStatus, errorThrown){
alert("fail. status: "+textStatus);
})