Pio*_*otr 5 arrays variables ajax jquery scope
从后端PHP脚本中检索它们作为二维JSON数组后,我的变量范围出现问题.这是我的代码:
var qns, qis, ncs, nzs, tps;
function get_questions() {
var url = "php/pytania.php";
$.ajax({
cache: false,
type: "GET",
dataType: "text",
url: url,
success: function(response) {
data = jQuery.parseJSON(response);
qns = data.qns;
qis = data.qis;
ncs = data.ncs;
nzs = data.nzs;
tps = data.tps;
}
});
}
$(document).ready(function() {
var index = 0;
get_questions();
$("#question_no").text(qns[index]);
});
Run Code Online (Sandbox Code Playgroud)
当我尝试最后引用我的qns数组时,它会显示一个变量undefined error.然而它在ajax声明中有效 - 没有问题......
谢谢,保重!:)
彼得.
jcv*_*dan 20
问题是成功方法是异步调用的 - 意味着在调用$().ajax并尝试引用变量之后,尚未分配它,因为尚未执行成功回调方法.
这可以通过将async选项设置为false来解决,如下所示:
$.ajax(
{
/* this option */
async: false,
cache: false,
type: "GET",
dataType: "text",
url: url,
...
Run Code Online (Sandbox Code Playgroud)
这意味着在获得响应之前,ajax调用之后不会执行任何其他操作.替代方法是将代码放在需要使用数组IN的成功回调方法本身.