Php ajax error response

Php ajax error response

Думаю многие с таким столкнулись, при ошибках в ajax многие модули на php не выводят ошибки, а просто дохнут на запросе ajax ($.ajax(). Опишу как сделать Вывод ошибок ajax, исключения в таких ситуациях. Ищем запрос ajax в коде вот мой например в filterPro:

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

$.ajax(dataType:»json»,
success:function (g) . >,
error: function(jqXHR, exception)
if (jqXHR.status === 0) alert(‘Not connect.\n Verify Network.’); // не включен инет
> else if (jqXHR.status == 404) alert(‘Requested page not found. [404]’); // нет такой страницы
> else if (jqXHR.status == 500) alert(‘Internal Server Error [500].’); // нет сервера такого
> else if (exception === ‘parsererror’) // ошибка в коде при парсинге
alert(jqXHR.responseText);
> else if (exception === ‘timeout’) alert(‘Time out error.’); // недождался ответа
> else if (exception === ‘abort’) alert(‘Ajax request aborted.’); // прервался на стороне сервера
> else alert(‘Uncaught Error.\n’ + jqXHR.responseText); // не знает что это
>
> // error
>); // общий

error: function(jqXHR, exception)
if (jqXHR.status === 0) alert(‘НЕ подключен к интернету!’);
> else if (jqXHR.status == 404) alert(‘НЕ найдена страница запроса [404])’);
> else if (jqXHR.status == 500) alert(‘НЕ найден домен в запросе [500].’);
> else if (exception === ‘parsererror’) alert(«Ошибка в коде: \n»+jqXHR.responseText);
> else if (exception === ‘timeout’) alert(‘Не ответил на запрос.’);
> else if (exception === ‘abort’) alert(‘Прерван запрос Ajax.’);
> else alert(‘Неизвестная ошибка:\n’ + jqXHR.responseText);
>
>

Не забывайте главное запятую поставить после success. И помните, этот способ хорош на время отладки, а так можете сделать более уязвимым сайт (он так же выводит и переменные и их значения). Тестировал у себя, пока нету проблемм, если есть улучшения кода пишите в комменте, будем улучшать вместе.

Читайте также:  Java string to character conversion

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

Источник

ajax, как вернуть сообщение об ошибке из файла PHP

В тот момент, когда я наводил курсор на любое слово, всегда отображается черный ящик. Если PHP-код возвращает текст, он отображается в черном поле (которое должно быть). Однако я хочу, чтобы он возвращал функцию ошибки, если текст не возвращен, поэтому я могу позже изменить CSS для черного ящика, чтобы он имел ширину 0px вместо 400px .

var x = ($(this).text()); $.ajax(< type: 'POST', url: 'process.php', data: < text1: x >, success: function(response) < $('#tooltip').text(response); >>); 
try < $db = new PDO('sqlite:ordbas.db'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); > catch(PDOException $err) < echo "PDO fel $err"; >if (isset($_POST['text1'])) < $text1 = $_POST['text1']; $results = $db->prepare("SELECT forord FROM words WHERE sokord='$text1'"); $results->execute(); $row = $results->fetch(); echo $row[0]; > конечные try < $db = new PDO('sqlite:ordbas.db'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); > catch(PDOException $err) < echo "PDO fel $err"; >if (isset($_POST['text1'])) < $text1 = $_POST['text1']; $results = $db->prepare("SELECT forord FROM words WHERE sokord='$text1'"); $results->execute(); $row = $results->fetch(); echo $row[0]; > 

Как вы могли подумать, есть какой-то неважный код, который я забыл. Надеюсь, кто-то может понять и помочь мне! Благодаря!

Вот как вы можете это сделать:

Очень простой способ:

В ВАШЕМ ФАЙЛЕ PHP:

В ВАШЕЙ jQuery AJAX SIDE:

var x = ($(this).text()); $.ajax(< type: 'POST', url: 'process.php', data: < text1: x >, success:function(data) < alert(data); //=== Show Success Message== >, error:function(data) < alert("error occured"); //===Show Error Message==== >>); 

$.ajax fail в $.ajax используется для сбора любых неудачных результатов.

показать / скрыть ошибку div на основе успеха / отказа, возвращенного из сценария сервера.

//hide error before ajax call $('.error').hide(); $.ajax(. ) .done:function() < . >.fail: function(jqXHR, textStatus, errorThrown)

Примечание. .success() & .error() устарели из jquery 1.8, поэтому не используйте их.

Уведомление об изнашивании: обратные вызовы jqXHR.success (), jqXHR.error () и jqXHR.complete () устаревают с jQuery 1.8. Чтобы подготовить код для их возможного удаления, вместо этого используйте jqXHR.done (), jqXHR.fail () и jqXHR.always ().

В вашем улове вы можете положить

header('Content-type: application/json'); echo json_encode(array('Error' => 'PDO fel "$err"')); 

Используйте функцию PHP json_encode для массива. Затем массив будет представлен javascript как объект JSON (аргумент / параметр ответа).

// important to tell your browser what we will be sending header('Content-type: application/json; charset=utf-8'); . bla bla code . // Check if this has gone right $success = $results->execute(); $row = $results->fetch(); $html = $row[0]; $result = [ 'success' => $success, 'html' => $html, ]; print json_encode($result); 
// You may now use the shorthand $.post('process.php', < text1: x >, function(response) < if (response.success) < $('#tooltip').text(response.html); >else < . show error . >>); 

Во-первых , вам нужно сообщить javascript, что на стороне сервера произошла ошибка

try < $db = new PDO('sqlite:ordbas.db'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); > catch(PDOException $err) < // Set http header error header('HTTP/1.0 500 Internal Server Error'); // Return error message die(json_encode(array('error' =>'PDO fel '.$err->getMessage()))); > 

Во-вторых , вам нужно обрабатывать ошибки при загрузке json

var x = ($(this).text()); $.ajax( < type: 'POST', url: 'process.php', data: < text1: x >>) // This will be called on success .done(function(response)< $('#tooltip').text(response); >) // This will be called on error .fail(function(response)< // Error catched, do stuff alert(response); >); 

Это пример запросов POST, касающихся чувствительных данных формы (или данных, которые вы будете связывать с запросом UPDATE или INSERT, например). Я включил функцию serialize () для обработки полей имени из формы на вашем конце. Я также удалил передачу данных через функцию успеха. Вы не хотите этого делать, когда имеете дело с конфиденциальными данными или данными, которые вы не планируете отображать. Фигурированный, я бы опубликовал это здесь, так как этот поток появился, когда я искал, как делать POST с AJAX, который возвращает ошибку.

Читайте также:  Внешняя таблица стилей

Говоря о возврате ошибки, вы захотите сделать это вместо этого, когда PHP снова обновится. Я также рекомендую читать через документы 5.4+.

http_response_code(404); die(); 

Я бросил функцию die (), чтобы убедиться, что ничего не произойдет после запроса вашего 404.

Попробуйте вместо этого следующий фрагмент:

var x = ($(this).text()); $.ajax(< type: 'POST', url: 'process.php', data: < text1: x >, success: function(response)< $('#tooltip').text(response); >, error: function(error) < console.log(error); >>); 

Источник

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