早上好,
我有一个非常简单的脚本,除IE之外的所有内容都能正常工作。我正在使用以下格式的XML响应填充包含来自数据库的信息的下拉菜单:
<options>
<option>Option1</option>
<option>Option2</option>
...
</options>
我得到这样的数据:
var options = $.ajax({
url : "/static/scripts/php/search.php",
type : "POST",
data : {search_key : key}
}).responseText;
无论浏览器如何,响应都会好转。 IE和Chrome会对响应文本进行相同的警报。
但是当我这样做时:
$(options).find('option').each(function() {
var option = document.createElement('option');
$(option).attr("value", $(this).text()).text($(this).text());
$(select).append(option);
});
IE从不进入each()循环,这意味着它没有在响应文本中找到“选项”。这是我的智慧结束。花费这么多时间的脚本太简单了。有帮助吗?
我通过JSLint运行脚本寻找小而奇怪的项目,而且它很干净。
谢谢,
汤姆
答案 0 :(得分:1)
responseText是一个字符串,首先尝试将其解析为xml。
options = $.parseXML(responseText);
此外,通常您不希望以这种方式使用响应文本。通常最好使用完成回调或成功回调。
$.ajax({
url: "url",
...
dataType: "xml", // so that it will auto parse it as xml
success: function(xml){
// do something with xml
}
});
或
$.ajax({
url: "url",
...
dataType: "xml" // so that it will auto parse it as xml
}).done(function(xml){
// do something with xml
});