Обновите все div, если они содержатся в результатах $ .ajax - PullRequest
0 голосов
/ 09 марта 2011

У меня есть функция ajax, которая возвращает загрузку html с некоторыми элементами div.

Internet Explorer любит возвращать комментарии html как часть цикла result [i].У них нет идентификатора, поэтому он жалуется, что «объект не поддерживает это свойство или метод».

Если я удаляю комментарии, IE работает нормально.Тем не менее, комментарии полезны.Я не хочу их удалять.

Firefox все время отлично работает.

Есть ли лучший способ написать это?

  $.ajax({
     type: "GET",
     url: ajaxUrl,
     async: async,
     success: function(result){
        //Cycling through result DOM
        for (i=0;i<$(result).length;i++) {
           $('#'+$(result)[i].id).html($(result)[i].innerHTML);
        }
     }

Редактировать: Это некоторый упрощенный html, возвращаемый из запроса ajax.Я отключил все данные, чтобы облегчить отладку.

<!-- this comment breaks everything -->
<div id="nav">
    <div id="nav_inner">
        <ul>
          <li class="first "><a href="http://localhost/onlinecatalogue/index.php/browse">Browse</a></li>
          <li class="nav_on"><a href="http://localhost/onlinecatalogue/index.php/search">Search</a></li>          
          <li class=""><a href="http://localhost/onlinecatalogue/index.php/contact">Contact</a></li>    


        </ul>

       <div id="simple_search">
          <form name="simpleform" action="search" method="post">
             <fieldset class="simple_search">
               <input class="simple_input grey" type="text" id="search_box" name="search_box" value="kelly"/>
               <input type="submit" class="k_button simple_button" value="Search" />
             </fieldset>
          </form>
       </div>

    </div>
</div>
<div id="ajax"><div id="search_content">
   <div id="search_container">
   </div>
   <div id="results">
   </div>
</div>
</div>

1 Ответ

0 голосов
/ 09 марта 2011

Для быстрого взлома, вы можете просто проверить, существует ли result[i].id, прежде чем что-либо делать.

if(tyepof result[i].id !== 'undefined' && result[i].id !== null)
  $('#'+$(result)[i].id).html($(result)[i].innerHTML);

Но если вы просто дадите этим результатам родительский элемент для привязки, вы можете сделать лучше:

$('#parent').html(result);

Возможно, вам придется возиться с этим, но вы поняли идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...