0

如何将变量设置dch为返回的成功 ajax 数据?

var aid='11111111V';
var dch = 0;
$.ajax({
    type:"POST",
    url:"new_hpa_fun_aplcval.php",
    data:"aid="+aid,
    success: function(msg) {            
        if (msg =='OK'){
            dch=1;                    
        } else {
            dch=2;
        }
    }
});
if (dch==1){
     //same php code
}else if (dch==2){
     //another php code
}
4

2 回答 2

1

也许你对异步操作不熟悉。在您的代码中,您在代码if-else底部的检查实际上是在回调之前执行的。success

您可能正在观察的是,dch始终是0. 相反,您需要在回调中继续执行代码:

var aid='11111111V';
var dch = 0;
$.ajax({
    type:"POST",
    url:"new_hpa_fun_aplcval.php",
    data:"aid="+aid,
    success: function(msg) {            
        if (msg =='OK'){
            // perform something here                    
        } else {
            // perform something here
        }
    }
});

在这种情况下,您甚至不需要该dch变量。

您的另一个选择是通过添加到方法中的选项来使 AJAX 调用同步。这将导致您的代码在继续执行之前阻塞并等待响应。async: false$.ajax

有关jQuery 底层发生的事情的更多技术描述,请参阅Ajax 上的 Wiki 。

于 2013-10-12T14:57:16.910 回答
-1

你可以这样尝试

1)将ajax包装在一个函数中并返回值

2) "async: false" 在 jQuery.ajax() 中做了什么?

function call() {
     var temp = 0;
     $.ajax({
        type:"POST",
        url:"new_hpa_fun_aplcval.php",
        async: false,  // Add this
        data:"aid="+aid,
        success: function(msg) {            
            if (msg =='OK'){
                temp = 1;                    
            } else {
                temp = 2;
            }
        }           
     });
     return temp;
    }        
var dch = call();
于 2013-10-12T14:56:06.137 回答