簡體   English   中英

在 Javascript 中讀取 php 編碼的 JSON

[英]Reading php-encoded JSON in Javascript

I have created a JSON object in php using json_encode and am attempting to display certain values of that object in javascipt through AJAX. 我收到來自 php 的響應沒有問題,但是當我嘗試使用 JSON 表示法訪問響應的任何值時,我得到了“未定義”。

代碼片段:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
   var response = xmlhttp.responseText;
   alert(response);
   alert(response.data);
}

Output:

{"data":[{"cheese":"pork"},{"cheese":"chicken"}]} // Yes, I'm hungry right now.
undefined

編輯:感謝大家的回復。 希望我能給大家一個復選標記,但我選擇了最有幫助的回復。

您必須解析 json。 這可以通過對eval的簡單調用來完成,但這只有在您絕對信任返回服務器的情況下才能完成,因為他可以讓您的腳本執行所有內容。

 var data = eval('('+response+')');

如果使用json2.js ,我建議的方式是一個小型 javascript 庫,它可以更快地為您處理解析。

var data = JSON.parse(response);

可從https://github.com/douglascrockford/JSON-js獲取

您需要解析 JSON:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
   var jdoc = JSON.parse(xmlhttp.responseText);
   alert(jdoc.data[0].cheese);
}

在舊瀏覽器中包含json2.js

您必須將響應轉換為 js object。

最簡單的方法是使用 eval():

eval('var result = ' +response);
alert(result.data);
var response = xmlhttp.responseText

這不是 JSON object。 這是純文本。 使用var myObject = eval('(' + myJSONtext + ')'); 例如獲取 JSON (eval 是邪惡的:)

看起來響應是純文本。 嘗試這個:

var response = xmlhttp.responseText;
var data = new Function("return "+xmlhttp.responseText)();

暫無
暫無

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

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