Индекс JSON добавляет к себе вместо запуска с 0 при перезагрузке - PullRequest
0 голосов
/ 28 июня 2011

Я уверен, что это должно быть простое решение, но я не могу понять, что это правильно. Когда я перезагружаю функцию в javascript, которая читает данные из внешнего JSON следующим образом:

var json = JSON.parse(this.responseText);

json.index работает нормально с индексом, начинающимся с 0, но когда я перезагружаю функцию (или снова вызываю функцию), тогда индекс равен (0 + json.length), и это проблема для меня, потому что Мне нужен индекс, чтобы получить правильные данные в другом окне. Любая подсказка о том, как начать json с индекса = 0 каждый раз, когда я запускаю функцию?

Большое спасибо!

обновление: вот функция, которую я повторно вызываю. Код был обрезан для простоты. Также стоит отметить, что это проект Appcelerator.

A2B.createView = function(tipo) {

    var xhr = Ti.Network.createHTTPClient();
    xhr.open("GET","http://localhost.com");
    xhr.onload = function() {
        var json = JSON.parse(this.responseText);

        if (!json) { 
            Titanium.API.info('Error - Null return!'); 
            return;
        }
         var myAnnotations = new Array();
         var json = json.all;
         var pos;


        if (tipo==1){

        for( pos=0; pos < json.length; pos++){
          // this adds some markers to a map
          myAnnotations.push(dbMarker);

        }
        }
        else {
            for( pos=0; pos < json.length; pos++){
         myAnnotations.push(dbMarker);
        }           
        }


        A2B.mapview.annotations = myAnnotations;


    };
    xhr.send();


    A2B.win.add(A2B.mapview);

    // map view click event listener
    A2B.mapview.addEventListener('click', function(json) {
        if (json.clicksource == 'rightButton') {
                var w2 = Titanium.UI.createWindow({
                    title:'XXX', 
                    url:'eachevent.js', 
                    backgroundColor:'#f8f8f8'
});
                w2.stringProp1 = ''+json.index+'';
//the value of json.index is the one that it keeps adding to itself when I call the function
                w2.myFunc = function()
                {
                    return 'myFunc was called';
                };
                w2.open({modal:true});
                };

    });

    });
};

1 Ответ

0 голосов
/ 28 июня 2011

Вы повторно используете / кэшируете один и тот же объект XmlHttpRequest каждый раз?то есть

this.xmlHttpRequest =  new XmlHttpRequest()

Если это так, это может быть связано с объединением нескольких ответных текстов, создающих более длинную и длинную проанализированную переменную json .Не могли бы вы показать нам код, пожалуйста?

...