Сообщение Ajax прерывается firefox (не отображается в Chrome или IE)

При использовании firefox запрос на отправку ajax, который у меня есть, сообщается как прерванный в firebug. Почта ajax отлично работает в IE и Chrome. Это не запрос на перекрестный домен. Я попытался рассмотреть проблему с помощью скрипача, и когда скрипач захватывает веб-трафик (с настройками, установленными для дешифрования https), почта работает. Сообщение не может быть создано в моей локальной среде разработки, так как все попытки Firefox успешно отправляют данные, которые я отправляю через ajax. Любая идея, почему сообщение работает во время скрипача? Это может дать мне некоторое представление о том, как заставить его работать.

$.ajax({
            type: 'POST',
            url: '/Save',
            data: JSON.stringify(dataset),
            datatype: "html",
            contentType: "application/json",
            success: function (data, textStatus, jqXHR) {
                //alert("success");
            },
            error: function (jqXHR, textStatus, errorThrown) {
                //alert("error");
            }
        });

Кроме того, этот запрос ajax вызывается рядом методов, и только когда отправляется самый большой из наборов данных, он не работает.

Ответы

Ответ 1

Попробуйте только

async: false

в опции ajax, у меня была та же проблема.

Ответ 2

Я бы начал с явного задания (и изменения) некоторых основных параметров ajax:

 cache: false,
 timeout: 60000,
 async: false

Ответ 3

Какой тип контента возвращает ваш сервер. JSON или HTML. Используете ли вы charset = utf-8 в содержимом сервера. Убедитесь, что ваш ответ сервера должен быть в JSON contentType. Еще одна догадка удаляет тип данных: "html" из вашего кода. Попробуйте свою удачу.

Если ваш сервер возвращает значения json, попробуйте ниже

$.ajax({
            type: 'POST',
            url: '/Save',
            data: JSON.stringify(dataset),
            datatype: "json",
            contentType: "application/json",
            success: function (data, textStatus, jqXHR) {
                //alert("success");
            },
            error: function (jqXHR, textStatus, errorThrown) {
                //alert("error");
            }
        });

datatype: "json", contentType: "application/json" имеет смысл

Ответ 4

Если вы отправляете этот запрос AJAX из обработчика события (например: щелчок кнопки отправки), обязательно запретите поведение браузера по умолчанию (отправьте форму) до тех пор, пока у вас не будет запущено 2 запроса HTTP, с первым прерывается.

Вы можете использовать e.preventDefault() для достижения этой цели.

У меня была эта проблема на IE8.

Ответ 5

Проверьте максимальный размер размера сообщения на вашем сервере.

Ответ 6

Это либо проблема с перекрестным доменом, либо проблема с тем, что Firefox прерывает ваш запрос, потому что запрос является асинхронным. Для кросс-домена вы можете проверить происхождение вашего запроса и то, что разрешено в webservice. Возможно, вам придется прочитать на CORS.

Если это не перекрестный домен, это, безусловно, проблема с запросом async. Просто измените его на синхронизацию.

Ответ 7

У меня также были подобные проблемы и я попытался описать некоторые из описанных выше идей. Я, наконец, зафиксировал "прерванное" состояние:

  • добавление e.preventDefault(); и return false; к кнопкам обработчиков событий
  • добавление параметров datatype: "json", contentType: "application/json", в jQuery.ajax.

спасибо всем для подсказок.