Ajax jquery异步返回值

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

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'); 

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

这是不可能的。
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) { ... }); 

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


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

您不能以这种方式进行变量赋值(异步)。 您必须在success处理程序中设置变量。

 variableArray = new Array(); get_char_val('x'); get_char_val('y'); function get_char_val(merk) { var returnValue = null; $.ajax({ type: "POST", url: "char_info2.php", data: { name: merk }, dataType: "html", success: function(data) { variableArray[merk] = data; } }); } 

完成所有检索后,您可以使用variableArray[x]variableArray[y]访问x和y变量

这可能不是您所期望的,但您可以设置async:如果您不想在浏览器中暂停,那么就是true,因此您希望在成功时使用px