全局变量未在javascript中更改(Cordova / Phonegap)

时间:2014-03-21 09:26:57

标签: javascript jquery ajax cordova

我正在编写Phonegap应用程序。我的问题是,在从函数内部修改全局变量时,全局变量不会被更改。

正在从jquery ajax回调中触发函数。这个ajax回调是从Phonegap' deviceready'事件。我非常确定这个函数是在chrome中执行的(使用ripple来触发' deviceready')但是全局变量没有被更改。

这是我的'设备准备'监听器:

document.addEventListener("deviceready", function() {
    storage = window.localStorage;
    LOCALE = "es_ES";
    $.ajax({
        type: 'POST',
        url: SERVER,
        data: 'task=' + 'checkRutas' + '&lng=' + LOCALE,
        dataType: "json",
        success: function(msg) {
            getNuevasRutas(msg);
        }
    });

这就是我改变我的arrayRutasId数组的功能:

var SERVER = "http://borrafe.clientes2a.net/XXXXXXX";
var LOCALE = "";
var RUTAVERSIONPREFIX = "rutaversionprefix";
var RUTADATA = "rutaprefix";
arrayRutasId = [];

function getNuevasRutas(respuestas) {
    var nuevasRutas = [];
    var arrayRutas = respuestas['rutas'];
    console.log('Rutas: ' + arrayRutas);
    rutasRestantesNetwork = arrayRutas.length;
    $.each(arrayRutas, function(i, ruta) {
        var version = storage.getItem(RUTAVERSIONPREFIX + ruta.version);
        arrayRutasId.push(RUTADATA + ruta.id);
        console.log(RUTADATA + ruta.id);
        if (storage.getItem(RUTADATA + ruta.id) === null || version < ruta.version) {
            console.log("Por sgunda condición?? " + (version < ruta.version));
            getRuta(ruta.id);
        } else {
            rutasRestantesNetwork--;
        }
    });
    console.log("Hay nuevas rutas en arrayrutasid " + arrayRutasId.length);
    return nuevasRutas;
}   

所有日志都是正确的,并且在函数&#39; arrayrutasid&#39;是正确推送元素。顺便说一句,常量正在函数内正确访问!!

- - - - - - - - EDIT 我试图从Chrome控制台读取变量。

1 个答案:

答案 0 :(得分:0)

您错过了});

document.addEventListener("deviceready", function() {
    storage = window.localStorage;
    LOCALE = "es_ES";
    $.ajax({
        type: 'POST',
        url: SERVER,
        data: 'task=' + 'checkRutas' + '&lng=' + LOCALE,
        dataType: "json",
        success: function(msg) {
            getNuevasRutas(msg);
        }
    });
});