Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   проблемы с импользованием глобальной переменной (https://javascript.ru/forum/extjs/20925-problemy-s-impolzovaniem-globalnojj-peremennojj.html)

Ichigeki 23.08.2011 01:26

проблемы с импользованием глобальной переменной
 
есть .JS файл, в котором:

var updateResponseFromServer = {
    requestParams : { 
        page         : 0, 
        id           : 0
    },
    lastDateTime : 0
};

function sendRequestToUpdate(inCurrentPage, inId, inLastDate){
    Ext.Ajax.request({

        url: 'updater.php?timestamp=' + inLastDate + '&page=' + inCurrentPage + '&id=' + inId,

        success: function(xhr) {

           
            var oldRequestParams = updateResponseFromServer.requestParams;
            
            updateResponseFromServer = xhr.response;
            
            updateResponseFromServer.requestParams = oldRequestParams;
            

        },

        failure: function() {

            Ext.Msg.alert("Request to update failed", "Server communication failure");

        }

    });
}


на что консоль пишет:

updateResponseFromServer is undefined
 updateResponseFromServer.requestParams = oldRequestParams;
scripts.js (строка 23)
updateResponseFromServer is undefined
 var oldRequestParams = updateResponseFromServer.requestParams;
scripts.js (строка 19)
updateResponseFromServer is undefined
 var oldRequestParams = updateResponseFromServer.requestParams;


вот почему так? Объект updateResponseFromServer ведь определен же выше!

devote 23.08.2011 03:50

может в переменной где нить русская буква закралась

Black_Prince 23.08.2011 13:32

попробуйте просто объявить элементарную глобальную переменную, например var q = 'q'. И сделать alert(q);

Просто мыслей никаких по поводу этой ошибки... сам использую глобальные переменные в ExtJS, и они нормально отрабатывают.

B@rmaley.e><e 23.08.2011 13:47

Дайте ссылку на весь script.js

devote 23.08.2011 14:11

согласен с B@rmaley.e><e, возможно ниже по коду где нить переменная updateResponseFromServer уничтожается. Или что-то с ней происходит.. А без всего кода вряд-ли тут что решишь.

Ichigeki 24.08.2011 22:56

вот скрипт http://ichigeki.lhosting.info/forum/...tes/scripts.js

B@rmaley.e><e 24.08.2011 23:32

Весьма странно.

У Вас там eval'ы встречаются, им точно корректный код приходит?

Ichigeki 24.08.2011 23:52

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 122226)
Весьма странно.

У Вас там eval'ы встречаются, им точно корректный код приходит?

Да, eval'ам прикодит корректный код, это проверял не раз

melky 25.08.2011 01:15

пример страницы с этим скриптом дайте, задебажу. не могу поверить, что она "теряется"

Ichigeki 25.08.2011 09:10

Цитата:

Сообщение от melky (Сообщение 122255)
пример страницы с этим скриптом дайте, задебажу. не могу поверить, что она "теряется"

http://ichigeki.lhosting.info/forum/forum.php

melky 25.08.2011 09:38

Цитата:

Сообщение от Ichigeki (Сообщение 122307)

Код:

Веб-страница недоступна

Ichigeki 25.08.2011 14:25

Цитата:

Сообщение от melky (Сообщение 122310)
Код:

Веб-страница недоступна

Ага, с утра была какая-то фигня с сервером, сейчас доступна

B@rmaley.e><e 25.08.2011 14:40

Тьфу, блин.
Цитата:

updateResponseFromServer = xhr.response;
Это что такое? Нет такого свойства у XHR объекта.

Ichigeki 25.08.2011 15:29

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 122403)
Тьфу, блин.Это что такое? Нет такого свойства у XHR объекта.

xhr, я так понимаю, это объект созданные из JSON'a, полученного от сервера:
{"success":true,"response":{"isLoggedIn":false,"areThereNewMessages":false,"pageNeedsToBeUpdated":false,"lastDateTime":"0"}}


Т.о. response есть

B@rmaley.e><e 25.08.2011 15:37

Ichigeki, неправильно понимаете. В Вашем случае xhr — обычный XMLHttpRequest объект.

Ichigeki 25.08.2011 23:25

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 122442)
Ichigeki, неправильно понимаете. В Вашем случае xhr — обычный XMLHttpRequest объект.

Да, Вы были правы! Проблема была именно в этом! Впредь постараюсь быть внимательнее :) Спасибо огромное!


Часовой пояс GMT +3, время: 06:16.