Ajax jquery异步返回值

Gha*_*kus 6 ajax jquery asynchronous return

如何在不冻结浏览器的情况下使此代码返回值.
你可以用新方法重写这个.

function get_char_val(merk)
{  
    var returnValue = null;
    $.ajax({   
                type:       "POST",
                async:      false,   
                url:            "char_info2.php",   
                data:   { name: merk },   
                dataType: "html",  
                success:    function(data)
                                    {
                                        returnValue = data;
                                    } 
        }); 
    return returnValue;
}
var px= get_char_val('x');
var py= get_char_val('y');
Run Code Online (Sandbox Code Playgroud)

编辑: 我需要在其他时间从php文件中获取至少20个变量.

SLa*_*aks 14

这是不可能的.
Javascript在UI线程上运行; 如果您的代码等待服务器回复,则浏览器必须保持冻结状态.

相反,您需要使用回调返回值:

function get_char_val(merk, callback)
{  
    var returnValue = null;
    $.ajax({   
                type:       "POST",
                url:            "char_info2.php",   
                data:   { name: merk },   
                dataType: "html",  
                success:    function(data) {
                    callback(data);
                } 
        }); 
}

get_char_val('x', function(px) { ... });
get_char_val('y', function(py) { ... });
Run Code Online (Sandbox Code Playgroud)

请注意,两个回调将以不可预测的顺序运行.


您应该修改您的设计,以便在一个AJAX请求中获得所有二十个值.
例如,您可以使用以逗号分隔的值列表,并返回类似的JSON对象{ x: "...", y: "..." }.

  • 正确,您不能在技术上使用异步请求中的返回值,因为程序流已经从响应到达时第一个方法的"返回"点开始. (4认同)