2012-02-25 45 views
3

我正在研究一個數據庫驅動的網站(我沒有編寫代碼,只是修改了一些東西),而且在Internet Explorer 8(IE8)中遇到問題。IE8:JavaScript爲空或不是對象錯誤?

它在IE9,Chrome,Safari,Firefox中運行正常,但不在IE8中(絕對不是IE7)。

問題是,當用戶進入產品搜索頁面時,他們將從下拉列表中點擊「選擇一個類別」並根據他們的選擇進行選擇,產品將從數據庫中提取並填充第二個下拉菜單。之後,用戶將點擊地圖上的一個區域,並顯示結果。

我得到一個錯誤,說prod.id null或不是一個對象(屏幕截圖附加= http://i.stack.imgur.com/MxZ5l.png)。我不確定這是爲什麼產生的。 Prod.id不爲null。

下面是一些代碼從我的PHP頁面:請訪問以下鏈接http://pastebin.com/VFYcdEqK

謝謝!

+3

調試IE javascript問題的最佳方法是使用F12上可用於IE的JavaScript調試器。當使用調試器運行頁面時,像這樣的異常將進入調試器,指向導致問題的確切代碼行,並且您可以檢查變量值並確切查看發生了什麼。 – jfriend00 2012-02-25 02:24:57

+0

據我所知,他只是這樣做了:pastebin中的代碼顯示了錯誤的行。 – raina77ow 2012-02-25 02:42:30

+0

顯示生成的代碼[查看源代碼]而不是php代碼總是更好。這樣我們可以看到你正在循環的對象。 – epascarello 2012-02-25 02:45:22

回答

1

代替這一切:

echo "var prods = {\n"; 
foreach ($prods as $k => $pl) { 
    echo "\"$k\": ["; 
    foreach ($pl as $p) 
     echo "{\"id\":\"" . $p['id'] . "\", \"name\": \"" . $p['name'] . "\"},"; 
    echo "],"; 
} 
echo "};"; 

試試這個:

echo "var prods = ".json_encode($prods).";"; 

看看是否能解決您的問題。如果沒有,你可以提供一個工作測試頁面,而PHP源代碼?

+0

這解決了我的問題。謝謝。我現在遇到了一個與IE7有關的新問題。選擇類別後,產品下拉消失。我可以點擊它(我知道它的位置),但看不到它。對此有何想法?再次感謝在IE8中解決這個問題。 – ialphan 2012-02-25 16:43:42

+0

更新:如果選擇了某個類別,則會隱藏該產品,但如果再次更改該類別,則會顯示產品下拉菜單。 – ialphan 2012-02-25 17:00:27

+0

另一個更新:出於某種原因,它是關於調整選擇框的大小。它的樣式寬度:95%,並將其改爲等效的px。 – ialphan 2012-02-25 22:17:03

相關問題