Javascript 从函数ajax返回
如果我有数据验证,我这里有个问题。更多的函数$ajaxjquery没有返回true和false的值,知道如何解决这个问题吗 示例代码: 示例调用:Javascript 从函数ajax返回,javascript,jquery,Javascript,Jquery,如果我有数据验证,我这里有个问题。更多的函数$ajaxjquery没有返回true和false的值,知道如何解决这个问题吗 示例代码: 示例调用: var check= ret("user"); if(check== true){ ..run .. } 默认情况下,ajax调用是异步的——这实际上就是“A”的含义。这意味着您的ret函数将在调用success函数之前返回。您有两个解决问题的选项: 使ajax调用同步-请参阅上的异步选项。这几乎总是一个坏主意,因为整个页
var check= ret("user");
if(check== true){
..run ..
}
默认情况下,ajax调用是异步的——这实际上就是“A”的含义。这意味着您的ret函数将在调用success函数之前返回。您有两个解决问题的选项:
Ajax是异步的。不能使用返回值。必须使用回调:
ret("user", function(check) {
if (check == true)
.. run ..
});
您可以像这样实现ret
:
function ret(as, callback) {
....codes...
$.ajax({
type: "POST",
url: "../../03",
data: "as="+as,
success: function (msg) {
if(msg == 'true' ){
..codes..
callback(true);
}else{
..codes..
callback(false);
}
}
});
}
另一种选择是强制请求同步,但这并不是实现同步的惯用方法。用户希望在jQuery对象外部传输真/假响应,以便函数可以返回它。有些情况下,您确实需要函数返回某些内容,而不是调用回调 即使jQuery调用是同步的(即“async:false”),上面的示例代码也不会工作,但确实必须将调用显式指定为同步 正确的方法是将jQuery对象附加到变量:
var obj = jQuery.ajax({ 'async:false', (...)
然后,在函数末尾,在jQuery对象的右括号后,向函数中添加:
return obj.responseText;
谢谢,我看一下手册:)一个非常相似的问题的可靠答案
var obj = jQuery.ajax({ 'async:false', (...)
return obj.responseText;