【问题标题】:can I inject data directly into session storage from server side selected data?我可以将数据从服务器端选择的数据直接注入会话存储吗?
【发布时间】:2011-09-10 05:43:52
【问题描述】:

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

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

原理不清楚的请制作cmets。

【问题讨论】:

    标签: php mysql html session-storage


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我同意你在这里所说的一切,除了我的知识没有扩展到像你这样的人。这就是我问这个问题的原因,以防有什么我还不知道。
    • 见我上面的评论。这个答案会导致整个页面被写入屏幕。
    【解决方案2】:

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

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

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

    【讨论】:

    • 我尝试了你的和@Marc B 并且都破坏了 PHP 的执行,因为 echo 语句似乎导致整个提供的 HTML 被写入屏幕。我知道您的答案中有一个小的印刷错误,并且解析的 JSON 是一个对象而不是变量,但这仍然不能解决问题。奇怪的是 JSON 被正确回显,所以我知道 PHP 脚本正在工作。
    猜你喜欢
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多