За последние 24 часа нас посетили 22828 программистов и 1237 роботов. Сейчас ищут 775 программистов ...

Вывод ошибок при jq. Как?

Тема в разделе "JavaScript и AJAX", создана пользователем miltorg, 13 ноя 2019.

  1. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    JQ открывает php-файл и получает с него данные.
    Всё хорошо, если данные приходят, при отправке CMS, например.
    А вот при отправке Емейла данные почему-то не приходят. Но Емайлы вроде приходят.
    Как это всё отследить?

    Какой-то китайский магазин с контролерами и пр.
    "фреймворк thinphp5" - со слов заказчика
    Письма уходят с phpmailer.
    Спасибо.
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @miltorg кусок кода бы показали.
    Код (Javascript):
    1. var jqxhr = $.post( "example.php", function() {
    2.   console.log( "success" );
    3. })
    4. .done(function(data) {
    5.     console.log( data);
    6. })
    7. .fail(function(xhr) {
    8.     console.log(xhr.responseText);
    9. })
    10. .always(function() {
    11.     console.log( "finished" );
    12. });
     
    miltorg нравится это.
  3. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    это ваще ни о чем откуда какой то кусок
    видно что библиотеку использует $post дальше там все в консоль
    ну что в консоли на что ссылается выше кода то нет
    хотя какая то библиотека дергает файл еге обрабатывает
    но нету там части кода
    console.log("success");
    где он откуда он его берет
    в этом вообще нет смысла
    может jq знает что такое "success" пишу просто на чистом, могу в этом плане ошибатся
    с очки зрения jq то если заменить то получается полноценный код
     
    #3 Павел Голубцов, 13 ноя 2019
    Последнее редактирование: 13 ноя 2019
  4. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    отправляет это:

    HTML:
    1.  $.getJSON("{:url('Membersecurity/send_auth_code')}", {type: $('#auth_type').val()}, function(data) {
    2.                                    
    3.                                         alert (data.msg);
    4.                                
    5.                                         if (data.state == 'true') {
    6.                                         //if (1) {
    7.                                             //$('#sending').hide();
    8.                                            
    9.                              
    10.                                         } else {
    11.                                             ALLOW_SEND = !ALLOW_SEND;
    12.                                             $('#sending').hide();
    13.                                             layer.alert(data.msg);
    14.                                         }
    15.                                     });
    --- Добавлено ---
    назад ничего не возвращается - то есть окошко не выскакивает при Емайле
    при cms - выскакивает
    --- Добавлено ---
    но письма доходят!
     
  5. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    20 лет опыта подводят чтоль? За 20 лет не научиться дебажить элементарные вещи это нонсенс. js открывает php, блин.
     
  6. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    н
    jq - оно не 20 лет.
    И я в основном свой код пишу, а не ищу неисправности
     
  7. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @miltorg глянь так
    Код (Javascript):
    1. $.getJSON( "{:url('Membersecurity/send_auth_code')}", {type: $('#auth_type').val()}, function() {
    2.   console.log( "success" );
    3. })
    4.   .done(function(data) {
    5.      console.log(data.msg);
    6.      if (data.state == 'true') {
    7.        //if (1) {
    8.            //$('#sending').hide();
    9.       } else {
    10.         ALLOW_SEND = !ALLOW_SEND;
    11.          $('#sending').hide();
    12.           layer.alert(data.msg);
    13.         }
    14.     })
    15.   .fail(function(xhr) {
    16.     console.log(xhr.responseText);
    17.   });
     
    miltorg нравится это.
  8. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Пока не смотрел. Но вы посмотрите на мой который я приводил выше:
    1. $.getJSON("{:url('Membersecurity/send_auth_code')}", {type: $('#auth_type').val()}, function(data) {
    2. alert (data.msg);
    Окошечко alert (data.msg); - не выскакивает вообще

    В вашем коде функция что-то вернёт?
    --- Добавлено ---
    Единственное что приходит в голову - Написать полный аналог этой функции на php
    --- Добавлено ---
    А при пустом data.msg - окошечко ведь выскочит всё равно? Или нет?
     
  9. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Выскочет вот это

    1. console.log(xhr.responseText);
     
    miltorg нравится это.
  10. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Спасибо.
    Скоро попробую если мне не закрыли доступ
     
  11. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Входа нет. Но эта тема для меня важна и и интересна. Ни у кого нет рабочего примера или статьи?
     
  12. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Из моих экспериментов. Прошу поправить если что не так:

    1. Данные должны прийти в формате json:
    {
    "one": "Матрица",
    "two": "Матрица. Перезагрузка",
    "three": "Матрица. Революция"
    }
    Любое отклонение от этого формата - вызывает именно мой случай - не возврат ничего.
    2. Теперь посмотрим функции которые прислал @Artur_hopf
    --- Добавлено ---
    1 файл:
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    <script type="text/javascript">


    $.getJSON('uu.php', function(data){
    alert("OK");

    });

    var jqxhr = $.getJSON("uu.php")

    </script>

    --------------------------------------------------------------------------------------------------

    uu.php :
    {
    "one": "Матрица",
    "two": "Матрица. Перезагрузка",
    "three": "Матрица. Революция"
    }
    --- Добавлено ---
    Вот мой код с вашими функциями. Он также ничего не выводит при ошибках в формате json. Ничего. Ни в логах. ни в Алерт :

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script type="text/javascript">

    $.getJSON('uu.php', function(data){
    console.log( "success" );
    console.log(xhr.responseText);
    alert("OK");

    });

    var jqxhr = $.getJSON("uu.php")

    </script>
     
  13. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    потому что про php и заголовки ты тоже не знаешь, сегсей.
     
  14. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @miltorg вообщето я писал так:
    Код (Javascript):
    1. $.getJSON( "{:url('Membersecurity/send_auth_code')}", {type: $('#auth_type').val()}, function() {
    2.   console.log( "success" );
    3. })
    4.   .done(function(data) {
    5.      console.log(data.msg);
    6.      if (data.state == 'true') {
    7.        //if (1) {
    8.            //$('#sending').hide();
    9.       } else {
    10.         ALLOW_SEND = !ALLOW_SEND;
    11.          $('#sending').hide();
    12.           layer.alert(data.msg);
    13.         }
    14.     })
    15.   .fail(function(xhr) {
    16.     console.log(xhr.responseText);
    17.   });
    а не
    Код (Javascript):
    1. $.getJSON('uu.php', function(data){
    2. console.log( "success" );
    3. console.log(xhr.responseText);
    4. alert("OK");
    5.  
    6. });
    вот тут можно ознакомится как это работает
    https://api.jquery.com/jQuery.getJSON/
     
    miltorg нравится это.
  15. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Так мой пример именно отсюда и есть.
     
  16. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    а на стороне php у вас должно быть так:
    uu.php :
    PHP:
    1. $array = [
    2.     "one" => "Матрица",
    3.     "two" => "Матрица. Перезагрузка",
    4.     "three" => "Матрица. Революция"
    5. ];
    6.  
    7. return json_encode( $array );
     
    miltorg нравится это.
  17. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Я понял одно. Что ответ должен приходить именно в json - иначе ничего не высветится. Ничегошеньки. - Это у меня и происходило.
    Дальнейшие ковыряния в этой методике - мне не нравятся. Я люблю PHP
     
  18. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @miltorg ой ты запарил, вот рабочий пример
    сторона php
    PHP:
    1. <?php
    2.  
    3. $array = [
    4.     "one" => "Матрица",
    5.     "two" => "Матрица. Перезагрузка",
    6.     "three" => "Матрица. Революция"
    7. ];
    8. echo json_encode( $array );
    сторона клиента
    HTML:
    1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    2. $.getJSON('test2.php', function(data){
    3. console.log(data);  
    4. }).fail(function(xhr) {
    5.     console.log(xhr.responseText);
    6. });
    как потестишь сделай ошибку на стороне сервера, например убери точку с запятой
    PHP:
    1. <?php
    2.  
    3. $array = [
    4.     "one" => "Матрица",
    5.     "two" => "Матрица. Перезагрузка",
    6.     "three" => "Матрица. Революция"
    7. ]
    8.  
    9. echo json_encode( $array );
     
    miltorg нравится это.
  19. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Всё что я пытался писать с ваших наводок - не работало.
    Если вам не трудно - напишите пожалуйста живой пример.
    Спасибо.
     
  20. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    написал выше, у меня только фаил test2.php
    --- Добавлено ---
    А в примере который вы показывали, данные еще и передаются, например можно потестить так:
    сторона сервера
    PHP:
    1. <?php
    2.  
    3. echo json_encode( $_GET );
    сторона клиента
    HTML:
    1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    2. $.getJSON('test2.php', {type: 'test'}, function(data){
    3. console.log(data);  
    4. }).fail(function(xhr) {
    5.     console.log(xhr.responseText);
    6. });
    --- Добавлено ---
    Но вместо echo по хорошему надо оборачивать все в функцию через ретурн, например так:
    PHP:
    1. <?php
    2. function test()
    3. {
    4.     $array = [
    5.        "one" => "Матрица",
    6.        "two" => "Матрица. Перезагрузка",
    7.        "three" => "Матрица. Революция"
    8.     ];
    9.  
    10.     echo json_encode( $array );
    11. }
    12. return test();
    13.  
    14. echo 'чтобы не выполнился код дальше';
     
    miltorg нравится это.
  21. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    В браузере есть консолька (F12 в Chrome, потом вкладка Console). Если jQuery ожидал JSON, а получил хрен знает что, то в консольке красными буквами появляется куча мата, который даёт нам понять, что что-то пошло не так. А если с английским языком порядок - то и понять что именно
     
  22. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Это вероятно работает. По крайней мере я получил ошибку 500 в консоли.
    Спасибо.
    --- Добавлено ---
    а можно живой пример?
     
  23. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @miltorg помимо ошибки 500 вы должны были получить и сообщение об ошибке:
    eweeweй.jpg
     
  24. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    так постепенно, глядишь, @miltorg освоит основные навыки джуниора :)
     
  25. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    А что, человеку с высшим образованием в аэрокосмической области трудно самому для себя составить пример в 10 строк и посмотреть, что в консольке браузера выводится? Вы же сами себя дискредитируете, а потом жалуетесь...