Jquery检查ajax帖子的成功

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);
    })