簡體   English   中英

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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM