在页面上存储 Ajax 请求数据的最佳方式


Best way to store data on page for Ajax requests

我生成了一个页面,其中包含由php生成的数据数组。我需要将其中一些数据用于 ajax 请求。

我只是想知道将数据存储在页面上的最佳方法是什么,它不敏感,页面不涉及表单。目前我一直在隐藏的div中使用数据属性,但似乎有点混乱?

例如。

<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'] ?>",
        "answerswer" : "<? $d['answer'] ?>" 
    },
<?}?>
};
</script>

有三种可能性:

  • 属性:这是你的方法

    这可能最适合简单的字符串,例如参数和描述性数据 - 例如data-popover包含弹出框内容的元素。许多JS插件都是以这种方式构建的。

  • PHP 在<script>标签中的回显

    对于在同一文件中使用<script>标签的成本(以及可能使用全局 JS 变量)的成本,没有"额外标记"。我不建议这样做。

  • 使用来自 PHP 的数据获取 JSON 的其他 AJAX 调用

    最适合更复杂的数据结构,例如嵌套数组或对象。