等待AJAX​​请求,然后完成jQuery

时间:2012-10-14 15:32:04

标签: php jquery ajax json function

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

2 个答案:

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