JQ открывает php-файл и получает с него данные. Всё хорошо, если данные приходят, при отправке CMS, например. А вот при отправке Емейла данные почему-то не приходят. Но Емайлы вроде приходят. Как это всё отследить? Какой-то китайский магазин с контролерами и пр. "фреймворк thinphp5" - со слов заказчика Письма уходят с phpmailer. Спасибо.
@miltorg кусок кода бы показали. Код (Javascript): var jqxhr = $.post( "example.php", function() { console.log( "success" ); }) .done(function(data) { console.log( data); }) .fail(function(xhr) { console.log(xhr.responseText); }) .always(function() { console.log( "finished" ); });
это ваще ни о чем откуда какой то кусок видно что библиотеку использует $post дальше там все в консоль ну что в консоли на что ссылается выше кода то нет хотя какая то библиотека дергает файл еге обрабатывает но нету там части кода console.log("success"); где он откуда он его берет в этом вообще нет смысла может jq знает что такое "success" пишу просто на чистом, могу в этом плане ошибатся с очки зрения jq то если заменить то получается полноценный код
отправляет это: HTML: $.getJSON("{:url('Membersecurity/send_auth_code')}", {type: $('#auth_type').val()}, function(data) { alert (data.msg); if (data.state == 'true') { //if (1) { //$('#sending').hide(); } else { ALLOW_SEND = !ALLOW_SEND; $('#sending').hide(); layer.alert(data.msg); } }); --- Добавлено --- назад ничего не возвращается - то есть окошко не выскакивает при Емайле при cms - выскакивает --- Добавлено --- но письма доходят!
20 лет опыта подводят чтоль? За 20 лет не научиться дебажить элементарные вещи это нонсенс. js открывает php, блин.
@miltorg глянь так Код (Javascript): $.getJSON( "{:url('Membersecurity/send_auth_code')}", {type: $('#auth_type').val()}, function() { console.log( "success" ); }) .done(function(data) { console.log(data.msg); if (data.state == 'true') { //if (1) { //$('#sending').hide(); } else { ALLOW_SEND = !ALLOW_SEND; $('#sending').hide(); layer.alert(data.msg); } }) .fail(function(xhr) { console.log(xhr.responseText); });
Пока не смотрел. Но вы посмотрите на мой который я приводил выше: $.getJSON("{:url('Membersecurity/send_auth_code')}", {type: $('#auth_type').val()}, function(data) { alert (data.msg); Окошечко alert (data.msg); - не выскакивает вообще В вашем коде функция что-то вернёт? --- Добавлено --- Единственное что приходит в голову - Написать полный аналог этой функции на php --- Добавлено --- А при пустом data.msg - окошечко ведь выскочит всё равно? Или нет?
Из моих экспериментов. Прошу поправить если что не так: 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>
@miltorg вообщето я писал так: Код (Javascript): $.getJSON( "{:url('Membersecurity/send_auth_code')}", {type: $('#auth_type').val()}, function() { console.log( "success" ); }) .done(function(data) { console.log(data.msg); if (data.state == 'true') { //if (1) { //$('#sending').hide(); } else { ALLOW_SEND = !ALLOW_SEND; $('#sending').hide(); layer.alert(data.msg); } }) .fail(function(xhr) { console.log(xhr.responseText); }); а не Код (Javascript): $.getJSON('uu.php', function(data){ console.log( "success" ); console.log(xhr.responseText); alert("OK"); }); вот тут можно ознакомится как это работает https://api.jquery.com/jQuery.getJSON/
а на стороне php у вас должно быть так: uu.php : PHP: $array = [ "one" => "Матрица", "two" => "Матрица. Перезагрузка", "three" => "Матрица. Революция" ]; return json_encode( $array );
Я понял одно. Что ответ должен приходить именно в json - иначе ничего не высветится. Ничегошеньки. - Это у меня и происходило. Дальнейшие ковыряния в этой методике - мне не нравятся. Я люблю PHP
@miltorg ой ты запарил, вот рабочий пример сторона php PHP: <?php $array = [ "one" => "Матрица", "two" => "Матрица. Перезагрузка", "three" => "Матрица. Революция" ]; echo json_encode( $array ); сторона клиента HTML: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> $.getJSON('test2.php', function(data){ console.log(data); }).fail(function(xhr) { console.log(xhr.responseText); }); </script> как потестишь сделай ошибку на стороне сервера, например убери точку с запятой PHP: <?php $array = [ "one" => "Матрица", "two" => "Матрица. Перезагрузка", "three" => "Матрица. Революция" ] echo json_encode( $array );
Всё что я пытался писать с ваших наводок - не работало. Если вам не трудно - напишите пожалуйста живой пример. Спасибо.
написал выше, у меня только фаил test2.php --- Добавлено --- А в примере который вы показывали, данные еще и передаются, например можно потестить так: сторона сервера PHP: <?php echo json_encode( $_GET ); сторона клиента HTML: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> $.getJSON('test2.php', {type: 'test'}, function(data){ console.log(data); }).fail(function(xhr) { console.log(xhr.responseText); }); </script> --- Добавлено --- Но вместо echo по хорошему надо оборачивать все в функцию через ретурн, например так: PHP: <?php function test() { $array = [ "one" => "Матрица", "two" => "Матрица. Перезагрузка", "three" => "Матрица. Революция" ]; echo json_encode( $array ); } return test(); echo 'чтобы не выполнился код дальше';
В браузере есть консолька (F12 в Chrome, потом вкладка Console). Если jQuery ожидал JSON, а получил хрен знает что, то в консольке красными буквами появляется куча мата, который даёт нам понять, что что-то пошло не так. А если с английским языком порядок - то и понять что именно
Это вероятно работает. По крайней мере я получил ошибку 500 в консоли. Спасибо. --- Добавлено --- а можно живой пример?
А что, человеку с высшим образованием в аэрокосмической области трудно самому для себя составить пример в 10 строк и посмотреть, что в консольке браузера выводится? Вы же сами себя дискредитируете, а потом жалуетесь...