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