AJAX Javascript - 撤回成功数据

时间:2015-07-02 11:13:15

标签: javascript jquery ajax

有没有办法返回AJAX调用获得的成功数据?

我正在尝试执行以下操作:

function myFunction(title) {
    var csrftoken = getCookie('csrftoken');
    $.ajax({
        url: 'call_details_cache/',
        type: 'post',
        data: {
            phone: title,
            type_member: "cust",
            csrfmiddlewaretoken: csrftoken
        },
        success: function (data) {
        },
        failure: function (data) {
            alert('Got an error dude');
        }
    });
}

然后:

console.log(myFunction(title))

undefined打印在我的控制台中。我该如何解决?

提前致谢!

2 个答案:

答案 0 :(得分:1)

Ajax是异步的,您尝试访问值,就像它是同步一样。 你需要一个回调或延期......

回调示例:

function myFunction(title) {
            var csrftoken = getCookie('csrftoken');

                $.ajax({

                    url: 'call_details_cache/',
                    type: 'post',
                    data: {phone:title,   type_member: "cust", csrfmiddlewaretoken: csrftoken},
                    success: myFunctionCallback,

                    failure: function(data) { 
                        alert('Got an error dude');
                    }
                }); 
            }
function myFunctionCallback(data) {
     console.log(data);
}

编辑: 这个主题已经回答了很多细节。见How do I return the response from an asynchronous call?

答案 1 :(得分:0)

您可以使用promise作为以下内容来实现此目的:

function myFunction(title) {
    var csrftoken = getCookie('csrftoken');

    return $.ajax({

        url: 'call_details_cache/',
        type: 'post',
        data: {
            phone: title,
            type_member: "cust",
            csrfmiddlewaretoken: csrftoken
        }

    });
}

然后您可以将其用作:

var promise = myFunction(title);

promise.then(function (data) {
    console.log(data);
},
 function(reason) {
     alert('You got error dude');
});