我如何定义ajax $ .post的成功和失败功能?
Answers:
文档在这里:http : //docs.jquery.com/Ajax/jQuery.ajax
但是,总而言之,ajax调用需要很多选择。您要寻找的是错误和成功。
您可以这样称呼它:
$.ajax({
url: 'mypage.html',
success: function(){
alert('success');
},
error: function(){
alert('failure');
}
});
我已经展示了成功和错误函数不带参数,但是它们可以接收参数。
错误函数可以使用三个参数:XMLHttpRequest,textStatus和errorThrown。
成功函数可以使用两个参数:data和textStatus。您请求的页面将在data参数中。
$.ajax(url).success(...)将不建议使用,$.ajax(url).done(...)而应改用。$.ajax(url, {success: ...}还是可以的,我看不到这些设置成员的个别说明上的弃用通知。
handler is *not* called for cross-domain script and cross-domain JSONP requests。这是切换到将fail函数链接到jqXHR对象的模式的动机,而不是使用error选项。
如果需要失败函数,则不能使用$ .get或$ .post函数。您将需要直接调用$ .ajax函数。您传递的选项对象可以具有“成功”和“错误”回调。
代替这个:
$.post("/post/url.php", parameters, successFunction);
您将使用此:
$.ajax({
url: "/post/url.php",
type: "POST",
data: parameters,
success: successFunction,
error: errorFunction
});
也有许多其他选择。该文档列出了所有可用的选项。
使用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所述查看文档。
我想知道为什么他们没有在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
});
post:符号?一样$.post()吗?