Jquery checking success of ajax post
我如何定义ajax $ .post的成功和失败功能?
文档在这里:http://docs.jquery.com/Ajax/jQuery.ajax
但是,总而言之,ajax调用需要一堆选项。你正在寻找的是错误和成功。
你会这样称呼它:
1 2 3 4 5 6 7 8 9 | $.ajax({ url: 'mypage.html', success: function(){ alert('success'); }, error: function(){ alert('failure'); } }); |
我已经证明了成功和错误函数不带参数,但它们可以接收参数。
error函数可以有三个参数:XMLHttpRequest,textStatus和errorThrown。
success函数可以有两个参数:data和textStatus。您请求的页面将位于data参数中。
如果需要失败功能,则不能使用$ .get或$ .post函数;你需要直接调用$ .ajax函数。您传递了一个可以具有"成功"和"错误"回调的选项对象。
而不是这个:
1 | $.post("/post/url.php", parameters, successFunction); |
你会用这个:
1 2 3 4 5 6 7 | $.ajax({ url:"/post/url.php", type:"POST", data: parameters, success: successFunction, error: errorFunction }); |
还有很多其他选择。该文档列出了所有可用选项。
使用jQuery 1.8及以上版本,应使用以下内容:
1 2 3 4 5 6 7 | 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文件中做了一些更改,,,这里是更改的代码块:
原始代码块:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 }); |
更改代码块:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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错误。
更新:
或者有另一种方法可以做到这一点:
1 2 3 4 5 | $.post(url,{},function(res){ //To do write if call is successful }).error(function(p1,p2,p3){ //To do Write if call is failed }); |
这种风格也是可能的:
1 2 3 4 5 6 7 | $.get("mypage.html") .done(function(result){ alert("done. read"+result.length+" characters."); }) .fail(function(jqXHR, textStatus, errorThrown){ alert("fail. status:"+textStatus); }) |