我的jQuery中的变量范围问题

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的成功回调方法本身.

  • 现在已弃用. (2认同)