Не понятки с JSON
Всем доброго времени суток. Народ, нужна помощь... есть обработчик АЯКСА:
header('Content-Type: application/json; charset=utf-8'); require 'functions.php'; require 'admin/functions.php'; if(isset($_POST['password'])) { function testJson($connect) { $pass = $_POST['password']; // Без всяких пока обработок /* $sql = mysqli_query($connect, "SELECT * FROM `users` WHERE `id` = '$pass'"); $res = mysql_fetch_array($sql); */ $data = array( "err" => 0, "id" => $pass, "name" => $res['name']); $data = json_encode($data); } return $data; } echo testJson($connect); Ну и конечно же сам JQ->Ajax function TestUs(data) { var pass; var user = data; var title = "Введите пароль администратора"; var result = prompt(title, pass); if(result) { $.ajax({ url: "/test.php", type: "POST", data: {password: result}, dataType: 'json', success: function (data) { var result = data; alert(result.err); console.log(result.id); } }); } } Так вот, если в самом обработчике снести инклуды и запрос на выборку, то JSON отправляет и принимает значения как нужно. Пробовал играться и с инклудами и с выборкой, без результатов. Кодировка в UTF-8 без BOM. Куда копать? |
Цитата:
|
Покопал, проблему не решил. Дело в том что в том примере хоть что то приходит от сервера клиенту. А у меня что самое интересное, если открыть фаирбаг -> Сеть, и отправить данные, то во вкладке "Сеть" не отображается отправленный мой ПОСТ запрос, но и алерт срабатывает у меня после SUCCESS, который считывает err=0 в файле test.php. Может сказанное мною сейчас и тупо, но оно и есть так. Я даже не понимаю сейчас как прочитать хотя бы то что сервер якобы отправляет клиенту.
|
Цитата:
|
Сейчас снёс инклуды, и в фаирбаге теперь наблюдаю успешную отправку своего ПОСТ запроса. Но при этом конечно же нарушается подключение к БД и одно из полей в ответе отображается как NULL, ну не суть. Интересно то, что при подключении инклудов, скрипт всё равно выполняется, но в каком то не понятном фоном режиме так сказать...Т.е. если в файле test.php в масииве $data => err, указать к примеру 555, затем вернутся в броузер и сделать рефрэш странички, а затем отправить снова данные ( при подключённых includ'ах ), то в фаирбаге нету отправленного пост запроса в сторону test.php, а алет со значением 555 срабатывает, значит данные всё же отправляются...и...в общем я запутался
|
А что там сложного в mysqli с обработкой, плейсхолер в запрос подставить.
Но если алерт срабатывает у меня после SUCCESS, который считывает err=0, значит JSON корректный возвращается. Если не работает при запросах и подключении, то есть ошибки на сервере, которые возвращаются, парсер JQ при этом не выдаст ошибки "не валидно". |
Цитата:
|
Цитата:
|
Тип принимаемых данных в запросе изменить на text, запрос парсить средствами JS - JSON.parse с обработкой исключительных ситуаций. Уверен, что будет ошибка.
В каком браузере отладка? |
Цитата:
if(isset($_POST['password'])) { function asd() { header('Content-type: application/json; charset: utf-8'); require 'functions.php'; #require 'admin/functions.php'; $pass = $_POST['password']; $sql = mysqli_query($connect, "SELECT * FROM `users` WHERE `id` = '$pass'"); $res = mysql_fetch_array($sql); $data = array( "status" => 1, "id" => $pass, "name" => $res['name']); $data = json_encode($data); return $data; exit(); } } Со включёнными инклудами, JSON отдаёт результат, но стоит раскоментировать выборку к БД, то вообще на глухо молчит. Без выборки возвращает NULL и всё то что я его прошу, с выборкой же всё глушится на тихо |
Часовой пояс GMT +3, время: 06:53. |