2010-11-29 6 views
2

У меня есть Chrome 7.0 и я пытаюсь получить доступ к полям глобального объекта. Код отлично работает в Firefox и IE, но отладчик Chrome не помогает мне никуда. Я попробовал Safari, и у меня тоже проблемы.Глобальные переменные Javascript в Webkit

Я могу получить значение таймера, но когда я получаю доступ к статусу через консоль, я получаю "[object Object]". status.completedJobs возвращение undefined даже после status = $.parseJSON(msg.d); (json строка действительный).

Я не уверен, что делать после этого. Вызов $.parseJSON(msg.d); из консольных работ, и я могу просматривать поля объекта с помощью отладчика. Как получить статус Объект должным образом назначен и доступен на глобальном уровне?

Вот мой код:

//Object that holds result of AJAX request 
var status = new Object(); 
//Refresh timer variables 
var timer; 
var timer_is_on = 0; 

$(document).ready(function() { 
    update(); 
    doTimer(); 
}); 

/** 
* Performs the AJAX request and updates the page 
*/ 
function update() { 
    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/getStatus", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
      if (msg) { 
       try { 
        status = $.parseJSON(msg.d); 
       } catch (e) { 
        console.log(e); 
       } 
       updateProgressBar(); 
      } 
     } 
    }); 
} 

function updateProgressBar() { 
    var percent = Math.round(status.completedJobs/status.numJobs * 100); 
    $('#progressPercentage').text(percent + '%'); 
    $('#progressbar').progressbar({ 
     value: percent 
    }); 
} 

/** 
* Used to initialize the timer. 
*/ 
function doTimer() { 
    if (!timer_is_on) { 
     timer_is_on = 1; 
     timedCount(); 
    } 
} 

/** 
* Executed on every time interval. 
*/ 
function timedCount() { 
    update(); 
    timer = setTimeout("timedCount()", 3000); 
} 
+0

вы пробовали `console.dir() `? – aditya 2010-11-29 16:15:42

+0

Вы очень уверены в `msg.d`? И какие данные вы возвращаете? – Harmen 2010-11-29 16:19:20

ответ

5

Попробуйте использовать другое имя, чем статуса, существует предопределенный член окна (окна глобального объект в браузере на основе JS) называется «статус». Также было бы хорошо, если бы вы назначили глобальные переменную в окне-объект, чтобы избежать конфликтов, если существует переменные в текущем (не глобальном) масштабе с таким же названием:

window['statusVar'] = $.parseJSON(msg.d); 
Смежные вопросы