2012-02-25 43 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

相关问题