Javascript 不会访问 json 对象

Javascript will not access json object

本文关键字:json 对象 访问 Javascript      更新时间:2023-09-26

当我运行以下javascript/php时,在提醒json对象的"userid"属性时,我总是得到"未定义"。但是,如果我字符串化 json 对象,它会返回"[{'userid':'1'}],这是正确的值。

如果我尝试访问 json 对象的正确名称,为什么会出现未定义?

这是我用来访问对象的 ajax:

$.ajax({
  type: 'POST',
  url: 'WebPHP/check_login.php',
  contentType: "application/json; charset=utf-8",
  data: finalObject,
  async: false,
  dataType: 'json',
  success: function(data) {
    if (data["result"] === false) {
      alert("Invalid Email or Password");

    } else {
      var userID = data["result"];
      alert(userID["userid"]);
      var url = "AMessage.html";
      alert(JSON.stringify(data["result"]));
    }
  }
});

以及连接到数据库的 php:

$json = file_get_contents('php://input');
$jsondata = json_decode($json);
$email = $jsondata - > email;
$password = $jsondata - > password;
$sql1 = " SELECT user_id as userid
FROM users
WHERE email = '$email'
AND password = '$password';
";
$result = mysqli_query($Thesisdb, $sql1) or die(mysqli_error($Thesisdb));
$rows = $result - > num_rows;

while ($row = $result - > fetch_assoc()) {
  $response[] = $row;
}
$post_data = array();
if ($rows == 1) {
  $post_data = array('result' => $response);
} else {
  $post_data = array('result' => false);
}
echo json_encode($post_data);
mysqli_close($Thesisdb);

您无法访问 userid 属性,因为您的userID变量包含一个数组 - 这就是 json 响应中[]括号的含义:[{'userid':'1'}] .尝试以这种方式访问它:alert(userID[0]["userid"]);

更好的是,不要返回数组,因为无论如何您都在检查该$rows == 1

是的,正如 #Jack 所说,您无法访问userid属性,您的 json 响应: [{'userid':'1'}]是数组形式,所以你需要使用语法:alert(userId[0].userid)