Jquery 警告正在刷新ajax调用的返回值

Jquery 警告正在刷新ajax调用的返回值,jquery,javascript-events,event-loop,Jquery,Javascript Events,Event Loop,(1.您觉得拥有一个可以调用ajax(url、数据、异步)的全局jquery ajax“助手”有用吗 如果我调用一个函数,该函数放置一个GET并返回成功响应 alert(ajax('localhost/hello','',false); 如果我发出警报(get_ajax()),我会收到“未定义”的警报。。即使有返回值 我看到这是一个事件循环问题,但我在ajax调用中使用了async:false。思想?谢谢。您的ajax函数包装了$。ajax调用不会返回任何内容:这就是未定义的的来源。要在警报示

(1.您觉得拥有一个可以调用ajax(url、数据、异步)的全局jquery ajax“助手”有用吗

如果我调用一个函数,该函数放置一个GET并返回成功响应

alert(ajax('localhost/hello','',false);
如果我发出警报(get_ajax()),我会收到“未定义”的警报。。即使有返回值


我看到这是一个事件循环问题,但我在ajax调用中使用了async:false。思想?谢谢。

您的
ajax
函数包装了
$。ajax
调用不会返回任何内容:这就是
未定义的
的来源。要在
警报
示例中获得一些值,您应该在函数底部添加一个return语句

var val = '';

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

return val;
要获得带有响应的警报,应执行以下操作:

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

您的
ajax
函数包装了
$。ajax
调用不会返回任何内容:这就是
未定义的
的来源。要在
警报
示例中获得一些值,您应该在函数底部添加一个return语句

var val = '';

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

return val;
要获得带有响应的警报,应执行以下操作:

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

这是被问了一百万次的问题之一,但几乎不可能搜索到。不管怎样,问题是当你从这里回来的时候

success: function(response) {
    return response;
}
…您不是从
ajax()
函数返回,而是从匿名
success
函数返回。要从主函数返回值,必须将字符串保存到变量中,以便从正确的函数返回

var val = '';

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

return val;

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

这是已经被问了一百万次的问题之一,但几乎不可能搜索。不管怎样,问题是当你从这里回来的时候

success: function(response) {
    return response;
}
var val = '';

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

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

var val = '';

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

return val;

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

对于同步调用,我相信您会这样做

var val = '';

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

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

对于同步呼叫,我相信您会这样做

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

但我需要回复。如果我在success中使用alert(),则会得到一个值,但在我对ajax函数使用alert()时则不会。如果它是异步的,则无法直接获得响应,因为ajax调用没有阻塞:它仅在调用
success
回调函数后才可用。无论您想对这些数据做什么,您都必须重构代码,以允许从
success
回调更新它。您不能在ajax调用完成后将受此调用影响的所有代码移到要使用的位置吗?是我的错误,我忽略了将其设置为Synchronous,但我需要返回响应。如果我在success中使用alert(),则会得到一个值,但在我对ajax函数使用alert()时则不会。如果它是异步的,则无法直接获得响应,因为ajax调用没有阻塞:它仅在调用
success
回调函数后才可用。无论您想对这些数据做什么,您都必须重构代码,以允许从
success
回调更新它。您不能在ajax调用完成后将受此调用影响的所有代码移动到所使用的位置吗?如果是我的错误,我忽略了将其设置为synchronous