2013-06-28 45 views
0

我認爲這可能被歸類爲基本的,但我很好奇。爲什麼你必須解析從ajax調用返回的json編碼數據,但是如果它在主加載文檔中被php回顯則不行?回顯json_encode和在AJAX中返回它之間的區別

編輯:基本上的問題是,如果我在這兩種情況下的特性id稱爲data的對象,所以我可以輸入

data.id 

,並有返回值時,JSON對象是否已在加載主文檔時回顯出來,但從ajax調用返回並且未解析時它會拋出錯誤?

+0

可能的答案。因爲PHP「回聲」從你的json生成html。可以被瀏覽器使用的Html。在你的JavaScript,你解析你的JSON將其轉換爲HTML ... – TCHdvlp

+0

似乎邏輯,doh!但是,再次,爲什麼在數據類型爲html時不自動分析html? –

+0

mhm ...你可以調用ajax,並獲得html格式的答案。在成功回調中,'$(「#element」)。html(data);'起作用。所以我想我們可以做'$(「#element」)。append(data);' – TCHdvlp

回答

1

通過迴盪,我假定你的意思是你做了這樣的事情:

<script> 
    var data = <? echo json_encode($data) ?>; 

    alert(data.id); 
</script> 

如果是這樣的話,瀏覽器會知道,因爲它包含由腳本標籤中迴應JSON是代碼。 JSON是JavaScript的一個子集,所以你在這裏真正做的是生成瀏覽器解釋的JavaScript代碼。

另一方面,阿賈克斯是不同的。當你用ajax加載某些東西時,它可能是text,xml,csv,html,svg或幾十種不同格式中的任何一種。 JSON只是像我列出的其他數據格式一樣,所以你必須告訴JavaScript引擎它是什麼。這就是爲什麼你必須解析它。它需要知道文本的格式,以便正確解釋它。

0

你不需要必須,而JSON編碼的字符串仍然需要從Javascript「解碼」。這只是能夠在返回的字符串中訪問數組元素/屬性的更快捷的方法。

+0

我的意思是爲什麼我可以訪問數組元素/屬性與回聲JSON數據而不解碼它,因爲我會在AJAX? –

相關問題