1

我有一段 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 中的其余代码?

4

2 回答 2

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";
            }
于 2012-10-14T15:34:39.813 回答
2

首先,请不要使用“new”作为变量名。“新”已经意味着什么。

现在进入实际问题...

当您调用 checkCP jquery 时,ajax 发布成功并在执行成功功能之前自动等待响应。问题是成功函数是一个独立的函数,并且从该函数返回的值不会从 checkCP 返回任何内容。checkCP 返回空值。

作为证据,请尝试在您的成功功能中添加警报。

这样的事情应该可以解决问题:

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 作为回调传递

于 2012-10-14T15:46:50.543 回答