警告ajax调用的返回值

时间:2011-11-11 07:58:02

标签: jquery javascript-events event-loop

(1.你认为有一个全局jquery ajax'帮助'可以调用ajax(url,data,async)吗?)

function ajax(ajax_url, ajax_data, ajax_async){
  ajax_async = typeof(ajax_async) != 'undefined' ? ajax_async : true;

  $.ajax({
    type: 'GET',
    url: ajax_url,
    data: ajax_data,
    async: ajax_async,
    dataType: 'text',
    success: function(response) {
        return response;
    },
    error: function(){

    }
  });
}

如果我正在调用放置GET的函数并返回成功响应。

alert(ajax('localhost/hello','',false);

如果我发出警报(get_ajax()),我会收到'未定义'的警告..即使有返回值

我看到它的事件循环问题,但我在ajax调用中async:false。想法?谢谢。

3 个答案:

答案 0 :(得分:3)

这是被问过一百万次的问题之一,但搜索几乎是不可能的。无论如何,问题是当你从这里回来时......

success: function(response) {
    return response;
}

...您不是从ajax()函数返回,而是从匿名success函数返回。要从main函数返回值,您必须将字符串保存到变量中,以便可以从正确的函数返回。

var val = '';

$.ajax({
    //       ....
    success: function(response) {
       val = response;
    },
    //       ....
});

return val;

请注意,这仅在您进行同步通话时有效。对于异步调用,最好将回调函数作为参数并将其用作成功函数。

答案 1 :(得分:1)

对于同步通话,我相信你会这样做

var data;
$.ajax({
    ...
    async: false,
    success: function(response) {
        data = response;
    }
});
return data;

答案 2 :(得分:0)

您的ajax函数包含$.ajax调用,不返回任何内容:undefined来自的地方。要在alert示例中获得一些价值,您应该在函数的底部添加一个return语句。

要获得有关回复的提醒,请执行以下操作:

success: function(response) {
    alert(response);
},