GET返回未定义的值输出函数

时间:2011-07-20 12:38:59

标签: javascript jquery

我有全局变量fan_coil_ai_bi,我使用该变量来存储我从请求获得的一些数据,但问题是len_1是1(在这种情况下是什么值)和len_2未定义(什么是错误的)。如何在我的功能中发生这种情况?如何实现len_2具有与len_1相同的值?这段代码有什么问题?

function read_required_fields(fan_coil_id) {
    var parameters = {};

    parameters['command'] = 'read_required_fields';
    parameters['fan_coil_id'] = fan_coil_id;

    $.get("php_scripts/network_script.php", parameters, function(data) {
        fan_coil_ai_bi=data;
        alert('len_1='+fan_coil_ai_bi.length);
    }, "json");
    alert('len_2='+fan_coil_ai_bi.length);
}

2 个答案:

答案 0 :(得分:3)

异步JavaScript和XML 异步

get方法的意思是“发出HTTP请求,当收到响应时,请执行此操作”。

在HTTP响应到来之前,它不会暂停执行该功能。

如果您想对数据执行任何操作,请在回调函数(或您从中调用的函数)中执行

$.get("php_scripts/network_script.php", parameters, function(data) {
    fan_coil_ai_bi=data;
    alert('len_1='+fan_coil_ai_bi.length);
    alert('len_2='+fan_coil_ai_bi.length);
}, "json");

答案 1 :(得分:2)

您可能想了解异步代码。在你的情况下,发生的事情是:

  1. 正在发送请求
  2. len_2正在收到提醒
  3. 请求已完成(有回复),len_1正在收到提醒
  4. 因此,当len_2被提醒时,fan_coil_ai_bi.length尚未定义。

    没有可能解决这个问题;相反,您已经有了一个可行的解决方案:将依赖项移动到回调中。