3

我想知道是否可以在 mysql 数据库上进行服务器端选择并将结果直接注入 HTML5 会话存储而不使用 ajax。场景如下:

假设在服务器端脚本上 OK,因此:

    header( "Content-type: application/json" );

    $jsondata = array();

    while ($Row = mysql_fetch_array($params))
    {
    $jsondata[]= array('field1'=>$Row["field1"], 
                           'field2'=>$Row["field2"],
                           'field3'=>$Row["field3"],
                           'field4'=>$Row["field4"]);
    };

    echo json_encode(array("eeData" => $jsondata));

通常,如果这是 ajax,我会等待响应,然后我可以解析结果并以这种方式处理它。但是该方法是在客户端启动的,实际上是对服务器的第二次请求。

但是,我想知道这是否可以在页面的绝对初始请求中实现,即在第一个请求时,获取数据并以某种方式在首次提供页面的同时将其直接注入会话存储中。

原理不清楚的请提出意见。

4

2 回答 2

1

网络服务器究竟应该如何进入浏览器来存储这些数据?在 websockets api 变得更加普及之前,服务器向客户端发送数据的唯一方式是客户端发起请求时。您不能只是“接触”浏览器并将数据填充到其中。

如果您希望在初始页面请求期间这样做,您始终可以将数据嵌入到正在发送的页面中

<script>
    var data_to_store = <?php echo json_encode($your_structure) ?>;
</script>

它会产生一个“胖”页面,但它会在同一个请求中发送数据。任何其他方法都需要第二次连接回服务器。

于 2011-09-09T21:41:48.753 回答
0

我可能误解了这个问题,但是如果您想在页面首次加载时将某些内容插入 LocalStorage,只需将其加载到 Javascript 变量中然后插入即可。例如:

...

var dataToInsert = JSON.parse("<?php echo(json_encode(arra("eeData" => $jsondata))?>");

然后就像使用dataToInsert任何其他 JS 变量一样。

于 2011-09-09T21:43:52.570 回答