我有一個頁面已經生成,並附有由php生成的數據數組。我需要將這些數據中的一部分用於ajax請求。在頁面上爲Ajax請求存儲數據的最佳方法
我只是想知道什麼最好的方法是在頁面上存儲數據,它不敏感,頁面不涉及表單。目前我一直在使用隱藏的div中的數據屬性,但似乎有點messey?
例如。
<div id="data" class="hidden" data-question="<?= $blah ?>" data-another="<?= $blahblah ?>"></div>
我有一個頁面已經生成,並附有由php生成的數據數組。我需要將這些數據中的一部分用於ajax請求。在頁面上爲Ajax請求存儲數據的最佳方法
我只是想知道什麼最好的方法是在頁面上存儲數據,它不敏感,頁面不涉及表單。目前我一直在使用隱藏的div中的數據屬性,但似乎有點messey?
例如。
<div id="data" class="hidden" data-question="<?= $blah ?>" data-another="<?= $blahblah ?>"></div>
雖然沒有「最好」的方式,我會建議JSON - 用於存儲和交換數據的格式,似乎適合您的情況很好。
不是存儲的HTML元素的數據屬性的任意數據,像這樣的:
<div data-name="bob" data-age="27" data-gender="male" />
JSON允許在您將它們存儲這樣的:
people = {
"bob" : {"age":"27", "gender":"male"},
"alice" {"age":"31", "gender":"female"}
}
您可以通過編程訪問該數據通過幾乎任何語言的本地或庫調用,特別是PHP和JavaScript。
在JavaScript中,JSON被訪問這樣的:
BobsAge = people['bob'].age;
這種格式允許用於其它編程訪問,諸如遍歷對象或鍵,其可能難以對HTML元素的數據的屬性進行。
在你的情況,JSON可以像這樣生成(雖然也有更好的方法):
<script>
var data = {
<? foreach ($data as $d){ ?>
{
"question" : "<? $d['question'] ?>",
"answer" : "<? $d['answer'] ?>"
},
<?}?>
};
</script>
謝謝你這麼好的回答!請原諒我可能會問另一個愚蠢的問題,但是創建的JSON元素是否會隨機存放在javascript(即ajax調用)的頁面中? – jhodgson4
是的,數據將被「打印」到html文件,無論用於什麼目的,都可以通過javascript訪問數據。 –
有三種可能性:
屬性:這是你的方法
這可能是最適合簡單的字符串,例如參數和描述性數據 - 例如data-popover
表示包含彈出窗口內容的元素。許多JS插件都是以這種方式構建的。在<script>
標籤
否「附加標記」在同一文件中有<script>
標籤的成本
PHP回聲(和可能,利用全球JS變量)。我不會推薦。
附加AJAX調用從PHP
最佳與數據提取JSON對於更復雜的數據結構,例如嵌套陣列或對象。
沒有真正的「最佳」的方式做到這一點,這一切都取決於你的需求。將它存儲在一個屬性中有好處,但它也有陷阱,比如必須避免引號。我個人不會在頁面上創建一個除了具有數據屬性之外沒有其他目的的元素,我會將這些數據存儲在相關元素上。 –
我認爲存儲數據的「最佳」方式取決於你打算如何使用它們。 –