IE не анализирует xml текст ответа, используя jquery find () должным образом - PullRequest
0 голосов
/ 12 декабря 2011

Доброе утро,

У меня действительно простой скрипт, который отлично работает на всех, кроме 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 (), что означает, что он не находит "option" в тексте ответа. Я в своем уме с этим. Это слишком простой сценарий, чтобы тратить на него столько времени. Любая помощь?

Я запускал скрипт через JSLint в поисках маленьких, нечетных предметов, и он чистый.

Спасибо

Tom

1 Ответ

1 голос
/ 12 декабря 2011

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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...