2016-03-16 58 views
0

我試圖調試IE ajax問題。我收集並存儲在數組中的數據調用eachItem。然後使用eachItem.join('')將其轉換爲字符串。但它甚至它使此步驟之前,我CONSOLE.LOG陣列和IE 10和11返回數組的console.log返回IE中的函數item(){[native code]} 10,11

function item() { 
    [native code] 
} 

eachItem.length的的console.log返回1,但我不能看到內容。後來我通過ajax推送這些數據並獲得一個空數組。但我試圖從這裏開始,看看爲什麼IE似乎不讀取我的數組。

+0

'eachItem'不是數組。某處你分配了一個錯誤的值。看起來你分配了一個函數,而不是調用它。當然,沒有一個完整的例子,我們無能爲力。請閱讀[mcve]。 –

+0

嗯。這是有道理的。這裏是一個完整的代碼jsfiddle:https://jsfiddle.net/adibb/m0stnb7z/1/ – Calrocks

回答

0

我有一個變量沒有用var關鍵字定義。解決了我的問題。

3

Internet Explorer(11)具有全局函數item,它是隻讀的。 item="foo"後,item.toString()仍顯示

function item() { 
    [native code] 
} 

但是它可以被重新聲明。 var item = foo後,item.toString()顯示

`foo` 

尋找在小提琴代碼使用item發現

item = serviceTitleRow + eachService + trip_charge; 

在第98行沒有事先聲明。我建議在使用前宣佈item可能會解決問題。

FWIW,Javascript嚴格模式將分配給未聲明的變量視爲錯誤,並在大多數時間捕獲此錯誤。由於函數名稱標識符對變量標識符沒有單獨的名稱空間,因此可以重新分配函數名稱的值。但是,當試圖更新item的值時,IE中的嚴格模式會拋出不同的「賦值爲只讀屬性不允許」錯誤,因此嚴格模式可能有助於在多個瀏覽器中更早地捕獲此錯誤。

+0

謝謝你......你救了我的一天.. –

0

查看您的代碼以查找是否有任何尚未聲明的變量,並且您直接使用該變量。 例如:

  1. ABC = {}可導致IE問題
  2. 變種ABC = {}將工作