Success function не работает

на jQuery.функция обратного вызова ajax success не выполнена

У меня есть вызов JavaScript Ajax (jQuery.ajax), который не выполняет функцию обратного вызова успеха.

Я вижу в firebug, что запрос разнесен и правильный результат с точки зрения json возвращается, как ожидалось. Что случилось?

6 ответов

много раз я сталкивался с подобными проблемами, и большую часть времени причиной был деформированный json. Попробуйте получить результат как тип текстовых данных, чтобы узнать, является ли это вашей проблемой.

кроме того, я хотел бы спросить, используете ли вы параметр типа «&jsoncallback=?»в вашем url, так как ваш тип данных-jsonp вместо простого json.

код $.ajax вызов с dataType: ‘jsonp’ может работать в этих сценариях:

  1. вы вызываете url-адрес в том же домене вашей страницы.
  2. вы вызываете url из вашего домена вашей страницы, которая поддерживает обратный звонок

Если вы находитесь вне этих двух случаев, вы ничего не можете сделать, так как вы не можете делать перекрестные вызовы XMLHttpRequest сайта.

необходимо задать свойству async значение false.

Это старый вопрос, но я подозреваю, что люди все-таки попаду.

Я боролся с этим некоторое время, и в конце концов сдался и перешел к отложенной модели. (Я использую jQuery достаточно долго, чтобы я все еще был в «старых» привычках. Как только я перешел на отложенную модель, все начало работать. Я понятия не имею, почему старый способ не сработал, но мне уже все равно. (Этот вопрос предшествует новой модели.)

Это случилось с одним из моих коллег, поэтому я решил добавить свое решение.

мы могли видеть, как выполняется вызов ajax, и могли видеть, что правильный ответ возвращается в Fiddler (статус 200 / полностью действительный JSON), но он никогда не попадет в ошибку, успех или полные обратные вызовы. Добавление async: false к вызову ajax заставит его работать, но это не было действительно правильным решением. Кроме того, размещение предупреждения непосредственно после вызова ajax (без async: false), и ожидание нескольких секунд после того, как предупреждение было показано, каким-то образом заставит обратные вызовы ajax работать . Очень странно.

оказывается, функция с вызовом ajax была привязана к входу типа= «submit», который был источником этого странного поведения. Изменение ввода на type= «button» исправило его.

jQuery Ajax вызов сервлета с параметрами mutliple не вызывал успех или ошибку, хотя вызов был успешным. Он был привязан к кнопке отправки. Изменение его вернуло событие успеха.

Читайте также:  Ваз 2110 не работает насос омывателя лобового стекла

вот мой код в случае, если кому-то он нужен для справки.

Источник

Не срабатывает json success. Jquery

День добрый. Столкнулся с json. Не силен тут, Пересмотрел не раз код, пробовал по-разному, прописывал без переменных, без обработки. Данные серверу отправляет. Метод обрабатывает правильно и $json[‘total’] — верное значение имеет. Но success: function(data) — не работает. Сделал проверку на $.ajaxSetup — Requested JSON parse failed. что не так — не могу понять (

2 ответа 2

Можно проверить, есть ли вывод чего-то ещё после Вашей функции. Просто переделать последнюю строчку запроса на

Если после этого у Вас ошибка — что-то выводится перед exit, нужно рыться в коде. Это самый очевидный вариант.

Чудес не бывает — если возникает ошибка Requested JSON parse failed — значит, сервер и правда отдал что-то, что не является корректным json.

Смотрели ли вы результат запроса в инструментах разработчика в браузере? Первое пришедшее мне на ум предположение — PHP выдал какое-нибудь предупреждение, которое и нарушило валидность ответа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками php jquery json или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.15.40479

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Почему не срабатывает success когда ajax-ом отправляю данные?

На страничке имеется яваскрипт, который парсит нужные элементы и закидывает это дело в объект

все нормально отрабатывает в консоли подготовленный объект выглядит так

только если полностью убрать вывод данных из обработчика, тогда срабатывает success
что за прикол? никак не разберусь

  • Вопрос задан более трёх лет назад
  • 533 просмотра

Должно быть так:

А вообще еще лучше сделать очистку вывода перед echo, чтобы случайно ни один лишний символ не попал в вывод — формат json достаточно строгий и даже лишний пробел приведет к ошибке.

Почему не срабатывает success когда ajax-ом отправляю данные?

$data = json_decode($_POST[‘arrObjects’], true);
echo json_encode($data);
спасибо так действительно работает, нужно было возвращать JSON

проверил
все отправляет/получает

но, на самом деле мне нужно было заставить отрабатывать скрипт, который формирует docx файл
из данных, которые пришли в пост массиве

Читайте также:  Не работает водная станция причины

это как то по другому делается? 🙂

заставить отрабатывать скрипт, который формирует docx файл
из данных, которые пришли в пост массиве

Источник

Почему не срабатывает success в ajax запросе?

Встретился с проблемой, что не работает «success», сам ajax вроде работает, данные отправляются на обработчик.
javascript:

  • Вопрос задан более трёх лет назад
  • 11659 просмотров

@Norbyt попробуйте выполнить запрос (я заменил строками значения переменных)

Я намеренно убрал указание типа получаемого контента. Выполнили, посмотрели консоль, сделали вывод.
Если сработал success, добавляем dataType: ‘json’ и выполняем, смотрим консоль.

Пишем сюда и потом думаем, что и как.

@Norbyt вы точно делали то, что я написал? Проблему нужно искать, уменьшая проблемный код. Если вам требуется DOMContentLoaded, то это значит, что вы продолжаете тестировать посторонний проблемный код. Так можно долго ковыряться.

Ещё раз — создайте пустой документ и в нём выполните ровно то, что я просил.
ПыСы. $(document).ready() => $()

@Norbyt ничего вы не забыли. Уберите. Срочно.
Аргументом метода click (и всех методов для работы с событиями) может быть только функция, а не результат её работы. То есть срабатывает click, и только тогда запускается RunAjax.

Это значит, что ошибка осталась в коде.

ПыСы. И зачем вы называете свои ошибки позорными? Это — моя работа, а вы делаете её за меня:)) Шучу. Я их так тоже не называю.

Источник

Успешное событие Ajax не работает

У меня есть форма регистрации, и я использую ее $.ajax для отправки.

Это мой запрос AJAX:

В моем файле submit1.php я проверяю наличие полей адреса электронной почты и имени пользователя в базе данных. Я хочу отобразить сообщение об ошибке, если эти значения существуют без обновления страницы .

Как я могу добавить это к успешному обратному вызову моего AJAX-запроса?

Результат, вероятно, не в формате JSON, поэтому, когда jQuery пытается проанализировать его как таковой, происходит сбой. Вы можете отловить ошибку с помощью error: функции обратного вызова.

В любом случае, вам, похоже, не нужен JSON в этой функции, поэтому вы также можете убрать dataType: ‘json’ строку.

Хотя проблема уже решена, я добавляю это в надежде, что это поможет другим.

Я сделал ошибку, пытаясь использовать функцию, подобную этой (успех: OnSuccess (productID)). Но сначала вы должны передать анонимную функцию:

Если вы не используете анонимную функцию в качестве оболочки, вызывается OnSuccess, даже если веб-служба возвращает исключение.

Я попытался удалить строку dataType, и у меня это не сработало. Я обошел проблему, используя «полный» вместо «успех» в качестве обратного вызова. Обратный вызов успеха все еще терпит неудачу в IE, но так как мой сценарий запускается и завершается в любом случае, это все, что мне нужно.

Читайте также:  Сломались носоупоры у очков

в jQuery 1.5 вы также можете сделать это следующим образом.

Убедитесь, что вы не печатаете (выводите или выводите) какой-либо текст / данные, прежде чем генерировать данные в формате JSON в файле PHP. Это может объяснить, что вы получили -sucessfull 200 OK-, но ваше событие sucess все равно не срабатывает в вашем javascript. Вы можете проверить, что получает ваш скрипт, проверив раздел «Сеть — Ответ» в firebug для POST submit1.php.

Вставьте alert() ваш success обратный вызов, чтобы убедиться, что он вызывается вообще.

Если это не так, то это просто потому, что запрос вообще не был успешным, даже если вам удастся попасть на сервер. Разумные причины могут быть в том, что истекло время ожидания, или что-то в вашем php-коде вызывает исключение.

Установите дополнение Firebug для Firefox, если вы еще этого не сделали, и проверьте обратный вызов AJAX. Вы сможете увидеть ответ и узнать, получил ли он успешный ответ (200 OK). Вы также можете поместить другой alert() в complete обратный вызов, который обязательно должен быть вызван.

У меня была такая же проблема. это происходит потому, что javascript ожидайте json тип данных в возвращаемых данных. но если вы используете echo или print в своем php, такая ситуация возникает. если вы используете echo функцию php для возврата данных, просто удалите dataType : «json» работу довольно хорошо.

Я возвращал действительный JSON, получая ответ 200 в моем «завершенном» обратном вызове, и мог видеть его в сетевой консоли chrome . НО я не указал

однажды я сделал, в отличие от «принятого ответа», который на самом деле решил проблему.

Я использую XML для переноса результата с php на сервере на веб-страницу, и у меня такое же поведение.

В моем случае причина была в том, что закрывающий тег не совпадал с открывающим тегом.

У меня была эта проблема с использованием функции ajax для восстановления пароля пользователя из Magento. Событие успеха не было запущено, тогда я понял, что было две ошибки:

  1. Результат не возвращался в формате JSON
  2. Я пытался преобразовать массив в формат JSON, но этот массив содержал не-UTF символы

Поэтому каждый раз, когда я пытался использовать json_eoncde () для кодирования возвращаемого массива, функция не работала, потому что один из ее индексов содержал не-utf символы, большинство из которых были выделены бразильскими португальскими словами.

Я пытался вернуть строку из контроллера, но почему управление, возвращающееся к блоку ошибок, не выполняется в ajax

Источник

Оцените статью