Как это возможно, что requep.isajaxrequest () верно из Firefox, но ложно от IE при использовании jQuery Post

StackOverflow https://stackoverflow.com/questions/2371921

Вопрос

Я пытаюсь проверить почту jQuery. Я выставляю форму и хочу обновить в Ajax и заменить с помощью формы успеха над Div (кажется общим применением).

Следующий код работает нормально в Firefox, но не в IE.

Одним из проблем является то, что из Firefox Request.isajaxrequest () правда, но идет от IE, Request.isajaxrequest () возвращает false.

ПРИМЕЧАНИЕ. Я положил в тему.

Вот мой код просмотра:

 <div id="contact">
   <form action="/Tracker/Add" method="post">
    <fieldset id="inputbox">
       <p>

        <label>Today's number</label>   <input class="inputText" id="weight" name="weight" type="text" value="208" /></p>
        <p><label>Today's Date</label>     <input class="inputText" id="datepicker" name="date" type="text" value="03-Mar-2010" /></p>
        <p><input type="submit" value="Enter" /></p>
    </fieldset>

А вот код JavaScript / jQuery:

<script type="text/javascript" src="../../Scripts/jquery/1.3.2/jquery-1.3.2.min.js"></script>

 <script type="text/javascript">
    $(document).ready(function() {
    $('#contact form').live('submit', function() {

            //$("#Loading").fadeIn(); //show when submitting

            $.post($(this).attr('action'), $(this).serialize(), function(data) {
                $("#contact").replaceWith($(data));
            });
            return false;
        });
    });
</script>

А вот мой контроллер действий:

    public ActionResult Add()
    {
         if (if (Request.IsAjaxRequest())
         {
                  //firefox will hit this but IE wont
          }


        Thread.Sleep(5000);
        return PartialView("EntryView", new MyViewModel());
    }
Это было полезно?

Решение

Я проверил, что ваш код (в котором я не смог найти ошибку), не отправлял запрос XHR с jQuery 1.3.2 и IE 6.0.2900.5512; Обновление JQuery к следующей доступной версии, 1.4.0, исправило сломанное поведение. С 1.4.0 (и выше), то есть поставит форму, используя AJAX и отправляет запрошенный X-запрошенный заголовок для IsAjaxRequest() работать. Вы можете обновить jQuery? Мне не повезло найти конкретную ошибку / исправить для этого, но если вам нужно придерживаться 1.3.2, я могу продолжать копать.

Другие советы

Добавьте следующий код, справа после кода jQuery:

jQuery.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    }
});

Это заставляет браузер добавить X-запрошенный - с Заголовок для каждого запроса AJAX.

Стоит отметить, что использование новейшей версии jQuery рекомендуется, поскольку есть много исправлений ошибок.

Если это не поможет, пожалуйста, проверьте запрос с Соревнование чтобы увидеть, если IE отправляет заголовок или нет.

Похоже, что в IE есть ошибка JavaScript, которая предотвращает вызов действия асинхронно. Проверьте наличие заголовка HTTP X-Requested-With: XMLHttpRequest при отладке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top