Я реализовал запрос Ajax на своем веб-сайте и вызываю конечную точку с веб-страницы. Он всегда возвращает 200 OK , но jQuery выполняет событие ошибки.
Я много чего перепробовал, но не смог разобраться в проблеме. Я добавляю свой код ниже:
Код JQuery
var row = "1";
var json = "{'TwitterId':'" + row + "'}";
$.ajax({
type: 'POST',
url: 'Jqueryoperation.aspx?Operation=DeleteRow',
contentType: 'application/json; charset=utf-8',
data: json,
dataType: 'json',
cache: false,
success: AjaxSucceeded,
error: AjaxFailed
});
function AjaxSucceeded(result) {
alert("hello");
alert(result.d);
}
function AjaxFailed(result) {
alert("hello1");
alert(result.status + ' ' + result.statusText);
}
Код C # для JqueryOpeartion.aspx
protected void Page_Load(object sender, EventArgs e) {
test();
}
private void test() {
Response.Write("<script language='javascript'>alert('Record Deleted');</script>");
}
Мне нужна ("Record deleted")
строка после успешного удаления. Я могу удалить контент, но не получаю это сообщение. Это правильно или я делаю что-то не так? Как правильно решить эту проблему?
TwitterId
, то вы должны передать объектdata
, а не строку:data: {TwitterId: row}
.Ответы:
jQuery.ajax
пытается преобразовать тело ответа в зависимости от указанногоdataType
параметра илиContent-Type
заголовка, отправленного сервером. Если преобразование не удается (например, если JSON / XML является недействительным), вызывается обратный вызов ошибки.Ваш код AJAX содержит:
В этом случае jQuery:
Ваш серверный код возвращает HTML-фрагмент со
200 OK
статусом. jQuery ожидал допустимый JSON и, следовательно, запускает функцию обратного вызова с ошибкойparseerror
.Решение состоит в том, чтобы удалить
dataType
параметр из вашего кода jQuery и вернуть код на стороне сервера:Но я бы предпочел возвратить ответ JSON и отобразить сообщение внутри обратного вызова success:
источник
$.ajax
вас могут попробовать$.getScript
. Внутри серверного сценария C # просто поместитеalert('Record Deleted');
(без<script>
тега) и установите ContentType вашего C # сценария наtext/javascript
.$.ajax
может также сработать, но я не могу вспомнить, как, может быть, вам просто нужно изменитьdataType: 'script',
. Возможно, вам больше не нужен обработчик успеха.$.post
. В этом случае JQuery угадывает тип данных, а затем ошибки, когда он не может проанализировать . Это действительно неприятный, труднодоступный гоча. Я исправил это, установив тип данных в"text"
.Мне повезло с использованием нескольких разделенных пробелами
dataType
s ( jQuery 1.5+ ). Как в:источник
Вам просто нужно удалить dataType: "json" в вашем вызове AJAX
источник
Это только для записи, так как я наткнулся на этот пост, когда искал решение моей проблемы, которое было похоже на ОП.
В моем случае мой запрос jQuery Ajax был заблокирован из-за политики того же источника в Chrome. Все было решено, когда я изменил свой сервер (Node.js), чтобы сделать:
Это буквально стоило мне часа удара головой о стену. Я чувствую себя глупо ...
источник
Я считаю, что ваша страница aspx не возвращает объект JSON. Ваша страница должна сделать что-то вроде этого (page_load)
Также попробуйте изменить свой AjaxFailed:
textStatus
должен дать вам тип ошибки, которую вы получаете.источник
Я столкнулся с этой проблемой в обновленной библиотеке jQuery. Если метод службы ничего не возвращает, это означает, что тип возвращаемого значения
void
.Тогда в вашем вызове Ajax, пожалуйста, укажите
dataType='text'
.Это решит проблему.
источник
Вам просто нужно удалить
dataType: 'json'
из заголовка, если ваш реализованный метод веб-службы недействителен.В этом случае при вызове Ajax не ожидается тип возвращаемого JSON-типа.
источник
Используйте следующий код, чтобы убедиться, что ответ в формате JSON (версия PHP) ...
источник
Я была такая же проблема. Моя проблема была в том, что мой контроллер возвращал код состояния вместо JSON. Убедитесь, что ваш контроллер возвращает что-то вроде:
источник
У меня похожая проблема, но когда я попытался удалить тип данных: 'json', у меня все еще есть проблема. Моя ошибка выполняется вместо успеха
источник
Еще одна вещь, которая запутала меня, - это использование
localhost
вместо 127.0.0.1 или наоборот. Очевидно, JavaScript не может обрабатывать запросы от одного к другому.источник
Посмотри это . Это также похожая проблема. Работая я попробовал.
Не удаляйте
dataType: 'JSON',
Примечание: echo only JSON Formate в PHP-файле, если вы используете только php echo, ваш ajax код возвращает 200
источник
У меня такая же проблема. Это произошло потому, что мой ответ JSON содержит некоторые специальные символы, а файл сервера не был закодирован с помощью UTF-8, поэтому при вызове Ajax это не был действительный ответ JSON.
источник
Если вы всегда возвращаете JSON с сервера (без пустых ответов),
dataType: 'json'
должно работать иcontentType
не нужно. Однако убедитесь, что вывод JSON ...JQuery AJAX сгенерирует 'parseerror' для действительного, но не сериализованного JSON!
источник
Ваш скрипт требует возврата в тип данных JSON.
Попробуй это:
источник
Попробуйте следовать
ИЛИ
Используйте двойные кавычки вместо одинарных кавычек в объекте JSON. Я думаю, что это решит проблему.
источник