Проблема с получением доступа к переменной в строке json при использовании mysql и ajax - PullRequest
1 голос
/ 17 апреля 2020

У меня есть проблемы с jquery. Почему возникает проблема с доступом к переменной в строке json?

$(function() {
  var jqxhr = $.ajax({
    type: "POST",
    url: "test.php",
    async: false,
    cache: false,
    timeout: 10000,
    data: {
      test: "test"
    },
    success: function(response) {
      console.log(response); // {"login":"1","status_":0,"user":1}
      console.log(response.login); //undefined
      test = JSON.parse(response); // Uncaught SyntaxError: Unexpected token  in JSON at position 2
      console.log(test.login); //not work 
    },
    complete: function(response) {
    }
  });
})();
test.php
require("config.php");
require("dbconnect.php");
$sth = $dbh->prepare('SELECT * FROM users WHERE email=?');
$sth->bindParam(1, $_POST["login"], PDO::PARAM_STR);
$sth->execute();
$user = $sth->fetch();
if(@$user['email']==$_POST["test"]) { 
$json = json_encode(array("login" =>"1","status_"=>0, "user" => 1), JSON_UNESCAPED_UNICODE);
}
else { 
$json = json_encode(array("login" =>"1", "status_"=>1, "user" => 1), JSON_UNESCAPED_UNICODE);
}
echo $json;

Это небольшой сценарий php, который возвращает единственную строку JSON по простому условию.

Если я не использую код ниже:

require("config.php");
require("dbconnect.php");
$sth = $dbh->prepare('SELECT * FROM users WHERE email=?');
$sth->bindParam(1, $_POST["test"], PDO::PARAM_STR);
$sth->execute();
$user = $sth->fetch();

, он работает и console.log (response.login) // возвращает 1), но если я использую соединение с базой данных, он не ' т. Почему?

Ответы [ 3 ]

0 голосов
/ 17 апреля 2020

Объявите dataType в вашем Ajax вызове. как -

dataType: 'json'

Или проанализируйте вашу строку для действительного JSON. как

JSON.parse(response);

Второе, что вы обычно должны кодировать JSON на стороне сервера. См. -

$json = json_encode(array("login" =>"1", "status_"=>1, "user" => 1));
0 голосов
/ 17 апреля 2020

Я сделал обязательный конфиг. php в dbconnect. php и скрипт работает нормально, но это, вероятно, какая-то аномалия.

0 голосов
/ 17 апреля 2020

Попробуйте поставить это на Ajax

dataType: 'json',
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...