我可以从服务器端选择的数据直接将数据注入会话存储吗?

时间:2011-09-09 21:29:51

标签: php mysql html5 session-storage

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

假设服务器端脚本正常,因此:

    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我等待响应,我可以解析结果并以这种方式处理它。但是该方法是在客户端启动的,实际上是对服务器的第二个请求。

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

如果原则不明确,请发表评论。

2 个答案:

答案 0 :(得分:1)

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

如果您在初始页面请求期间需要此功能,则始终可以将数据嵌入到正在发送的页面中

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

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

答案 1 :(得分:0)

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

...

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

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