2014-05-15 31 views
0

我無法使用json對象從PHP回傳到javascript。在php文件中我定義了解碼從Javascript中檢索到的json對象使用Javascript

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
echo($json); 

然後在javascript文件中我想訪問這個對象。

$("#test_btn").click(function() { 
       $.get("serverside.php", function(data, status) { 
        console.log("data " , data["a"]); //undefined 
        console.log(JSON.parse(data)); // error 
       }); 
      }); 

我得到未定義的數據[「a」]和JSON.parse錯誤。我應該如何使用returend數據?

+5

使用關聯數組,並用'json_encode'呼應它。不要創建自己的JSON,這很容易出錯。 – elclanrs

+0

我正在閱讀php中的Json文件。我遇到了麻煩,所以我做了這個測試。我使用file_get_contents($ url)獲取文件內容,但在使用javascript讀取數據時遇到同樣的問題 – hAlE

+4

請嘗試'console.log(data)'並查看它輸出的內容。你可能沒有得到有效的JSON – itsananderson

回答

3

基於您的評論(呼應幾個JSON字符串),你應該做到以下幾點:

  1. 初始化一個空的結果數組;
  2. 讀取您的文件並使用json_decode()將其放入數組或對象;
  3. 將此數組/對象添加到結果數組中;
  4. 最後,使用json_encode()來編碼和回顯結果數組。
+1

是的,這應該工作!謝謝 :) – hAlE

1

在嘗試訪問data['a']之前,您必須先製作一個JSON.parse(data),然後從PHP發送一個標頭,隱式地聲明瀏覽器數據輸出將是JSON。

header ('Content-Type: application/json'); 
+2

jQuery將做出一個智能猜測,如果它識別出json,它將在你獲得它的時候被解析。 – jeroen

+3

成功回調時'JSON.parse(data)'的順序無關緊要,因爲它實際上會觸發一個錯誤,表明它只是解析了無效的json。 –

0

問題可能是PHP正在返回一個看起來像JSON的字符串。

在JS中,它可能有助於JSON.parse(數據)從字符串轉換爲JSON對象,然後您可以訪問它。

$("#test_btn").click(function() { 
    $.get("serverside.php", function(data, status) { 
    $json = JSON.parse(data); 
    console.log("data " , $json["a"]); // should now return 1 
    }); 
}); 
0

你需要把json_encode或解析它在JavaScript