IE没有正确地使用jquery的find()来解析xml响应文本

时间:2011-12-12 15:06:52

标签: jquery xml ajax internet-explorer

早上好,

我有一个非常简单的脚本,除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运行脚本寻找小而奇怪的项目,而且它很干净。

谢谢,

汤姆

1 个答案:

答案 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
});