簡體   English   中英

為什么這些對象屬性未定義?

[英]Why are these Object Properties undefined?

我正在嘗試使用json_encode訪問從我的PHP腳本返回的對象的屬性,如下所示:

的PHP

echo json_encode(array(
  'person_id' => $personID,
  'job_id' => $jobID)
);

JS

$.ajax({
  url: url,
  cache: false,
  type: "POST"
}).done(function(sData){
  console.log(sData);
  console.log(sData.job_id);
  console.log(sData.person_id);
});

輸出:

{"person_id":1,"job_id":1}
undefined
undefined

這里發生了什么? 為什么我不能訪問這些屬性?

更新:

對於任何未來的訪問者來說,這是我之前犯過很多次錯誤了( dataType ),並且肯定會再次犯錯。

這可能特別令人困惑,因為當您在Chrome開發工具中檢查服務器響應時,它會自動解析為JSON對象(在PREVIEW標簽中)。

在此處輸入圖片說明

Chrome可以很好地做到這一點,以便您可以輕松檢查響應數據,但是對於JavaScript代碼卻並非如此,您需要聲明響應的正確dataType ,以便您的代碼可以將數據解釋為對象而不是字符串。

$.ajax默認情況下不將響應評估為JSON。 你必須傳遞dataType: 'json'

這應該做

$.ajax({
    url: url,
    cache: false,
    type: "POST",
    dataType: 'json'
}).done(function(sData){
        console.log(sData);
        console.log(sData.job_id);
        console.log(sData.person_id);
});

PHP返回一個字符串值。 此值必須解析為javascript對象。 嘗試這個:

 $.ajax({
   url: url,
   cache: false,
   type: "POST"
 }).done(function(sData){
   sData = JSON.parse(sData);
   console.log(sData);
   console.log(sData.job_id);
   console.log(sData.person_id);
});

JSON不是對象/關聯數組,而是一個字符串表示形式。 JSON允許您跨語言發送對象,但必須將其從字符串解析為該語言的值。 在jQuery中,您可以只設置dataType但是重要的是,您必須以任何語言解析JSON。

sData字符串

使用jQuery.parseJSONjQuery.getJSON()

暫無
暫無

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

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