Javascript jQuery:将参数传递给ajax错误函数

Javascript jQuery:将参数传递给ajax错误函数,javascript,jquery,Javascript,Jquery,这几天我一直在做一些ajax功能,我面临一个小问题。我有一个调用ajax的函数。我想给它一个值,并在请求完成时返回该函数。我如何: 触发ajax子函数的返回 等待“应答”变量更改,然后返回它 这里的精神(事实上,它无法工作): 谢谢大家! 您不能从AJAX函数返回值,因为AJAX请求是异步发生的(想想检索远程网页需要多长时间) 相反,您需要提供回调(在请求完成时执行的函数): 然后将函数作为参数传递给ajaxFunction,它将接收来自AJAX请求的响应 ajaxFunction(func

这几天我一直在做一些ajax功能,我面临一个小问题。我有一个调用ajax的函数。我想给它一个值,并在请求完成时返回该函数。我如何:

  • 触发ajax子函数的返回
  • 等待“应答”变量更改,然后返回它
这里的精神(事实上,它无法工作):


谢谢大家!

您不能
从AJAX函数返回
值,因为AJAX请求是异步发生的(想想检索远程网页需要多长时间)

相反,您需要提供回调(在请求完成时执行的函数):

然后将函数作为参数传递给
ajaxFunction
,它将接收来自AJAX请求的响应

ajaxFunction(function (answer) {
    // do something with answer
});

由于需要
id
value
参数,可以将这些参数添加到
ajaxFunction
方法的参数中。

使用
async:false
标志-参考文档

请注意,在jQuery1.8中,将不推荐使用
async

var answer = null;

$.ajax({
    url: "validate/"+id,
    type: 'POST',
    data: {'field' : value},
    success: function(data) {
        //noty({text: data, type: 'success'});
    },
    error:function (xhr, ajaxOptions){
        noty({text: xhr.status + " : " + xhr.responseText, type: 'error'});
        answer = "error";
    },
    async: false
});

return answer;

您使函数接受回调,回调在错误处理程序中调用,并将
应答
值传递给它,就像您使用
noty
一样。不能从异步函数调用返回值。或者更好:使用延迟对象:哇,这种方式对我来说太奇怪了。。。我会试试的,如果你做了一个阻塞调用,你可以这样做,但是这是不明智的,因为它会在请求期间阻塞浏览器UI,如果我需要阻塞调用该ajax函数的函数呢?比如说它是否需要等待?@Gabrietheron:它永远不应该需要等待。显示加载微调器或告诉用户泡杯茶。^^^是的,在这种情况下,请求应该直接影响用户的下一个操作,并且应该非常快。。。但我明白了,让他们等着吧,谢谢!如何在1.8中替换它?强烈反对使用
async
。。。它被弃用是有原因的。那么我应该如何让我的函数等待呢?在这种情况下,需要使调用异步。如果必须在成功/失败后执行代码,请将其添加到
成功:
/
失败:
回调。这只是组织代码的问题。
ajaxFunction(function (answer) {
    // do something with answer
});
var answer = null;

$.ajax({
    url: "validate/"+id,
    type: 'POST',
    data: {'field' : value},
    success: function(data) {
        //noty({text: data, type: 'success'});
    },
    error:function (xhr, ajaxOptions){
        noty({text: xhr.status + " : " + xhr.responseText, type: 'error'});
        answer = "error";
    },
    async: false
});

return answer;