PHP 未正确返回 AJAX 调用的 JSON


PHP not correctly returning JSON for an AJAX call

我有一个PHP函数,它应该将JSON对象返回给AJAX调用,但它返回了一个字符串。这是我从 AJAX 调用调用的 PHP。

<?php
  echo json_encode(array("error", 0, "Success!"));
?>

下面是 AJAX 调用。

    $.ajax({
        type: "POST",
        url: "../api/login.php",
        data: { id: username, password: password },
        success: function(response) {
            alert( "Data Saved: " + response );
            $("#login_username").val("");
            $("#login_password").val("");
        }
      });

当此函数返回时,我尝试在控制台中访问响应,这就是发生的事情

response
> "["error",0,"Success!"]"
response[0]
> "["

如果你需要一个对象,那么在 ajax 设置中指定dataType:json。它还将确保如果从服务器发送任何无效的 JSON,它就会因解析错误而出错。很可能你没有在你的响应头中指定内容类型(application/json; charset=utf-8),这让jquery可以确定mime类型本身,所以指定dataType以确保你得到一个对象或一个错误返回(在无效的JSON的情况下)。

  $.ajax({
    type: "POST",
    dataType:'json'
    url: "../api/login.php",
    data: { id: username, password: password },
    success: function(response) {
        alert( "Data Saved: " + response );
        $("#login_username").val("");
        $("#login_password").val("");
    }
  });

你的实现似乎正在使用jQuery,或者jQuery的某种模型。如果不使用jQuery,我很乐意分享更多针对您的问题的解决方案。

添加数据类型

 $.ajax({
        dataType: 'json',
        type: "POST",
        url: "../api/login.php",
        data: { id: username, password: password },
        success: function(response) {
            alert( "Data Saved: " + response );
            $("#login_username").val("");
            $("#login_password").val("");
        }
      });

问题是,默认情况下,jQuery需要一个字符串。

var foo = "bar";
foo[1] === "a"; // true

文档: jQuery.ajax

在你的

ajaxcall中添加一个参数

$.ajax({
    type: "POST",
    url: "../api/login.php",
    data: { id: username, password: password },
    dataType: "json" //-< add this param.
    success: function(response) {
        alert( "Data Saved: " + response );
        $("#login_username").val("");
        $("#login_password").val("");
    }
  });

http://api.jquery.com/jQuery.post/