我想知道是否可以在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我等待响应,我可以解析结果并以这种方式处理它。但是该方法是在客户端启动的,实际上是对服务器的第二个请求。
但是,我想知道是否可以在页面的绝对初始请求中实现,即在第一次请求时,获取数据并以某种方式将其直接注入到会话存储中,同时首次提供页面。
如果原则不明确,请发表评论。
答案 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
。