Jquery检查ajax帖子的成功

时间:2009-02-17 02:15:20

标签: jquery

如何定义ajax $ .post的成功和失败功能?

5 个答案:

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