2011-07-02 249 views
-1

我有這樣的代碼:調試Chrome擴展

... 

    function init() { 
     getdata(); 
    } 

    var txt; 
    function getdata() { 
     var xhr = new XMLHttpRequest(); 
     xhr.open('GET',myurl, true); 
     xhr.setRequestHeader('Cache-Control', 'no-cache'); 
     xhr.setRequestHeader('Pragma', 'no-cache'); 
     xhr.onreadystatechange = function() { 
      if (xhr.readyState == 4) if (xhr.responseText) { 
       txt = xhr.responseText; 
      } 
     } 

     xhr.send(); 
     console.log(txt); 
    } 

... 

<body onload="init();"> 

... 

爲什麼我不能得到txt價值?請幫忙。忘了提及 - 所有這些都發生在後臺頁面,我目前沒有任何其他頁面。我試圖通過擴展概述背景頁面,但是控制檯犯規輸出任何東西控制檯..:((

+0

你知道嗎[Firebug](http://getfirebug.com)?或者Chrome控制檯? –

+0

看到我的更新.. – DrStrangeLove

+0

是的,但是你的代碼不起作用,你錯過了代碼'{'某處。 –

回答

1

的XHR請求是異步的,所以當你登錄到txt發送後立即安慰,請求尚未完成,因此txtundefined

將它設置可同步運行通過設置asyncfalseopen命令中,或者只是在您已綁定到onreadystatechange事件的功能中插入console.log(txt)

+0

這不僅僅是壞的縮影,我相信這是因爲在發佈的代碼中缺少某些東西,或者它被錯誤地修改。沒有更多的信息,我們不會知道。 –

+0

我試圖緊貼在txt = xhr.responseText之後的console.log(txt);但它沒有幫助.. :(( – DrStrangeLove

+0

什麼是if(xhr.readyState == 4)if(xhr.responseText)'應該是什麼意思? – Acorn

0

它,因爲腳本已被處理,console.log被稱爲此外,xdrundefinedonload被稱爲

+0

'console.log'不會被調用,因爲它在'getdata()'函數中..但我承認,不好的縮進確實使它有點難以分辨。 – Acorn

+0

我會想象一個正確書寫的代碼段可能會解決這個問題。 –

+0

啊,你是對的,它是完全畸形的.. – Acorn