У меня есть несколько очень простых AJAX-вызовов с использованием jQuery.
Мои веб-методы c # помечены как [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
и возвращают правильно отформатированный JSON.
Это прекрасно работает в FF, но сходит с ума в IE:
вызывается обработчик ошибок, где response
имеет status = 200
(!!), responseText
- это правильный JSON, который я хочу получить, а statusText
- "parsererror"
.
Я видел где-то на SO (кажется, не могу найти его снова), что проблема в том, что IE ожидает ответ в формате xml и вызывает исключение синтаксического анализатора для всего остального.
предлагаемое решение было,в основном, с помощью обработчика ошибок в качестве обработчика успеха:
$.ajax(
{
url: "SampleScriptService.asmx/Function",
type: "POST",
data: {},
contentType: "application/json;",
dataType: "json",
success: function (result) {
SuccesFunction(result.d);
},
error: function (e) {
if (e.status != 200) {
alert("this is a real error");
}
SuccesFunction(JSON.parse(e.responseText).d);
}
});
это кажется мне по-настоящему хакерским.Кто-нибудь знает о каком-либо другом решении?
ps вещи, которые я уже пробовал: эти , это , все предлагаемые решения здесь
ОБНОВЛЕНИЕ
не уверен, связано ли это или нет, но IE также выдает эту странную ошибку -
Expected ';' Line: 101139813 Char: 5 Code: 0 URI: http://localhost/sample/samplePage.htm
Излишне говорить, что мой HTML-файл содержит ~ 100 строк.
Если я не выполняю ajax-вызовы (и, следовательно, вышеупомянутый обработчик ошибок не вызывается), то эта ошибка не появляется.