objectjquery ajaxUPD成功返回undefined

时间:2012-12-03 17:00:12

标签: javascript jquery ajax

我创建了一个名为 save 的函数,当我调用 save 函数时,我获得成功undefined或object object

更新: 更新以获得ajax返回的jqxhr对象的值

function save() {
 return   $.ajax({
        type: "POST",
        url: "foo.json",
        data: json_data,
        contentType: 'application/json',
        success: function (data, textStatus, xhr) {

            $('<div id="loading">Loading...</div>').insertBefore('#form');

        },

        error: function (jqXHR, textStatus, errorThrown) {


        }
    });


}


$(document).ready(function () {

$(function () {
 $("#save").click(function () {
     var jqxhr = save();
     alert("success " + jqxhr.success);
     alert("status " + jqxhr.status);
     alert("status " + jqxhr.readyState);
 });
});


 });

3 个答案:

答案 0 :(得分:5)

第十次。

ajax是异步的。

使用回调函数。

答案 1 :(得分:1)

Ninja由OP编辑
首先,return函数中没有save语句,因此返回undefined值时可以正常工作。

其次,它不会那样工作。您需要返回$.ajax调用(它本身返回jqXHR object,您可以在其中挂接并设置不同事件的代码.Afterall,默认情况下运行 Ajax请求 asyncronously

save()

中的

return $.ajax({ ...

以后......

save().done(function( retValue ) {
    alert('success ' + retValue);
});

详细了解 jQuerys Ajax 延迟对象 herehere

答案 2 :(得分:0)

可能是这导致了这个问题,因为我看到你有两个文档就绪处理程序。

/***/
 $(function () { // <--------------------I think this doesn't has to be here, 
                 //                      so remove it and try if this solves 
                 //                      the issue
     $("#save").click(function () {

         var success = save();
         alert("success " + success);

     });
 }); // <-------------------------------and this one too