2013-03-02 2 views
0

У меня есть вид MVC, где я выполняю некоторые подкачки данных, используя компонент PagedList. Мой JavaScript, чтобы поддержать это выглядит следующим образом:MVC - Ajax - несогласованность между Chrome и IE 9

$(function() { 

    var getPage = function() { 
     var $a = $(this); 

     var options = { 
      url: $a.attr("href"), 
      type: "get" 
     }; 

     $.ajax(options).done(function (data) { 
      var target = $a.parents("div.pagedList").attr("data-ExchangeSite-target"); 
      data: $("form").serialize(), 
      $(target).replaceWith(data); 
     }); 

     return false; 
    }; 

    $(".main-content").on("click", ".pagedList a", getPage); 

}); 

Мои .cshtml выглядит файл, в частности, как это:

@model ExchangeSite.Entities.BicycleSearchSeller 

    <div id="itemList"> 

     <div class="pagedList" data-ExchangeSite-target="#itemList"> 
      @Html.PagedListPager(Model.BicycleSellerListingList, pageNumber => Url.Action("Index", new {pageNumber}), 
      PagedListRenderOptions.ClassicPlusFirstAndLast) 
     </div> 
    ... 
    ... 

В IE9, это работает отлично. Когда я нажимаю на определенный номер страницы или следующую/предыдущую страницу, для моего контроллера обновляется список асинхронных вызовов («itemList»). Тем не менее, в Chrome два вызова выполняются на моем контроллере. Один - это вызов Ajax, другой - нет. Может ли кто-нибудь сказать мне, почему в Chrome два звонка поступают на мой контроллер? Если вам нужно увидеть больше кода, пожалуйста, дайте мне знать.

+0

В вашем обратном вызове успеха у вас, похоже, есть некоторые данные: $ ("form"). Serialize(), 'line, которая не соответствует картине. Почему эта строка завершается запятой вместо двоеточия? Это ваш настоящий код? Какую версию jQuery вы используете? Не могли бы вы показать свой полный код? Вы можете увидеть некоторые ошибки JavaScript на консоли Chrome? Я не могу воспроизвести проблему. Помимо строки, о которой я упоминал ранее, код, который вы опубликовали, кажется прекрасным. –

+0

@DarinDimitrov - Да, это мой фактический код. Запятая была ошибкой. Замена его точкой с запятой разрешила проблему. Кажется, IE не беспокоился об этом, но Chrome был. Спасибо. Если вы введете свои комментарии в качестве ответа, я проголосую за вас и приму ответ. –

+0

Опубликовано как ответ. –

ответ

2

Там, кажется, некоторые ошибки в линии Вашего успеха обратного вызова:

data: $("form").serialize(), 

Он завершается с запятой вместо запятой. Он также содержит двоеточие после data. IE может быть немного более терпимым к сломанному javascript по сравнению с Google Chrome.

+0

Спасибо. Я также хотел бы поблагодарить вас за активное участие в SO, связанную с MVC. Вы оказали мне огромную помощь. –