我有一段jQuery代码:
var newData = checkCP(somedata);
if(newData=="hi"){
alert("Welcom");
}
function checkCP(jsData){
$.ajax({
type: "POST",
url: "Process.php",
data: jsData,
dataType: "json",
success: function(data){
if(data.match==1)
return "hi";
else
return "bye";
}
});
}
我不知道为什么欢迎警报永远不会出现。我查了一切; PHP文件返回1,但显然在等待AJAX响应之前它会传递
if(new=="hi"){
alert("Welcom");
}
有没有办法等待AJAX响应,然后读取jQuery中的其余代码?
答案 0 :(得分:3)
是的,您可以将$ .ajax()中的'async'选项设置为false。
$.ajax({
type: "POST",
async: false,
url: "Process.php",
data: jsData,
dataType: "json",
success: function(data){
if(data.match==1)
return "hi";
else
return "bye";
}
答案 1 :(得分:2)
首先,请不要使用'new'作为变量名。 “新”已经意味着什么。
现在谈到实际问题......
当你调用checkCP时,jquery会成功执行ajax发布并在执行success函数之前自动等待响应。问题是成功函数是一个独立的函数,从中返回一个值不会从checkCP返回任何内容。 checkCP返回null。
作为证据,请尝试在成功函数中添加警报。
这样的事情可以解决问题:
function deal_with_checkCP_result(result)
{
if(result=="hi"){
alert("Welcom");
}
}
function checkCP(jsData,callback){
$.ajax({
type: "POST",
url: "Process.php",
data: jsData,
dataType: "json",
success: function(data){
if(data.match==1)
callback( "hi");
else
callback( "bye");
}
});
}
将deal_with_checkCP_result作为回调传递