jquery.ajax установлен с async = true для отправки данных обратно на сервер не работает, если страница перенаправляет / перезагружается - PullRequest
0 голосов
/ 03 сентября 2010

Я пытаюсь сохранить контент при каждом нажатии кнопки / гиперссылки, используя jquery.ajax (используя Asp.net 3.5). Логика следующая:

  • Через .bind в jquery я привязываю свой собственный метод (MakeLog) к нажатию кнопки или гиперссылке. События нажатия кнопки / гиперссылки ничего не содержат, мне нужно использовать .bind для выборочных элементов управления.
  • Теперь у нас есть кнопка, событие щелчка которой вызовет метод, скажем MakeLog.
  • Фрагмент кода для MakeLog выглядит следующим образом:

.

var xhr = jQuery.ajax({  
    url: "/Logger.aspx",  
    data: { content: logContent },  
    error: function(XmlHttpRequest, textStatus, errorThrown) {
        alert ("XmlHttpRequest: " +   XmlHttpRequest + 
               " textStatus: " + textStatus + "errorThrown: " + 
               errorThrown);
    },
    contentType: "Content-Type: text/html; charset=utf-8",  
    success: function (xml, txtStatus, XmlHttpRequest) {  
       //alert("xml" + XmlHttpRequest);  
    },  
    async: true  
});  
  • Это нормально работает в IE, но в Firefox это не отправляет данные обратно, как ожидалось.
  • Я попытался определить проблему и обнаружил следующее: jQuery ajax вызывает async: false против async: true
  • Что я понимаю, так это то, что когда страница перенаправляется / перезагружается из-за нажатия кнопки или гиперссылки, асинхронный вызов не работает должным образом.

1 Ответ

0 голосов
/ 03 сентября 2010

Это похоже на похожую проблему, с которой я столкнулся при регистрации событий AJAX. Это можно решить загрузкой пиксельных изображений через JavaScript. Причина в том, что страница загружает запросы прерываний XmlHttp (ваши AJAX-вызовы). Однако загрузка изображений не будет прервана загрузкой страниц.

См. Следующий вопрос, который я разместил ранее для справки: AJAX GET условия гонки?

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