Ответ 1
Попробуйте только
async: false
в опции ajax, у меня была та же проблема.
При использовании 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 вызывается рядом методов, и только когда отправляется самый большой из наборов данных, он не работает.
Попробуйте только
async: false
в опции ajax, у меня была та же проблема.
Я бы начал с явного задания (и изменения) некоторых основных параметров ajax:
cache: false,
timeout: 60000,
async: false
Какой тип контента возвращает ваш сервер. 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" имеет смысл
Если вы отправляете этот запрос AJAX из обработчика события (например: щелчок кнопки отправки), обязательно запретите поведение браузера по умолчанию (отправьте форму) до тех пор, пока у вас не будет запущено 2 запроса HTTP, с первым прерывается.
Вы можете использовать e.preventDefault()
для достижения этой цели.
У меня была эта проблема на IE8.
Проверьте максимальный размер размера сообщения на вашем сервере.
Это либо проблема с перекрестным доменом, либо проблема с тем, что Firefox прерывает ваш запрос, потому что запрос является асинхронным. Для кросс-домена вы можете проверить происхождение вашего запроса и то, что разрешено в webservice. Возможно, вам придется прочитать на CORS.
Если это не перекрестный домен, это, безусловно, проблема с запросом async. Просто измените его на синхронизацию.
У меня также были подобные проблемы и я попытался описать некоторые из описанных выше идей. Я, наконец, зафиксировал "прерванное" состояние:
e.preventDefault();
и return false;
к кнопкам обработчиков событийdatatype: "json", contentType: "application/json",
в jQuery.ajax
.спасибо всем для подсказок.