2011-09-09 12 views
2

mysqlデータベースでサーバーサイドセレクトを実行し、その結果をajaxを使わずにHTML5セッションストレージに直接注入できるかどうかは疑問です。次のようなシナリオは次のとおりです。私はサーバー側の選択データから直接セッションストレージにデータを注入できますか?

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)); 

通常、これはアヤックスだった場合、私は応答を待つだろうと私は結果を解析して扱うことができます:

は、このように、サーバー側のスクリプトにOKを想定しますそれはそう。しかし、その方法はクライアント側で開始され、実際にはサーバーへの2番目の要求です。

しかし、これはページの絶対的な最初の要求、すなわち最初の要求でデータを取得し、何らかの形でそれがページが最初にセッションのストレージに直接注入されるかどうかサービスされました。

原則が明確でない場合は、ご意見ください。

答えて

1

ウェブサーバーは、このデータを保存するためにブラウザにどのようにアクセスする必要がありますか? websockets apiが広く普及するまで、クライアントがデータをクライアントに送信するのは、クライアントがリクエストを開始したときだけです。ブラウザに手を差し伸べるだけで、データを取り込むことはできません。

あなたが最初のページ要求の際にこれをしたい場合、あなたは常に

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

を送信されていますページにデータを埋め込むことができますそれは脂肪」のページのために作ると思いますが、それは送信したいです同じリクエスト内のデータ他の方法では、サーバーに2番目の接続が必要です。

+2

あなたがここに言ったすべてに同意します。但し、私の知識はあなた自身のような人々にまで及んでいません。だからこそ、私がまだ知らなかったことがある場合に質問しました。 – T9b

+0

上記の私のコメントを参照してください。この回答により、表示されたページ全体が画面に表示されます。 – T9b

0

私は質問を誤解しているかもしれませんが、ページが最初に読み込まれたときにLocalStorageに何かを挿入したい場合は、Javascript変数にロードしてから挿入してください。たとえば:

... 

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

はその後も他のJS変数と同様dataToInsertで動作します。

+0

私はあなたと@Marc Bの両方を試してみましたが、両方ともecho文が表示されたHTML全体を画面に書き込むように見えるという点でPHPの実行を壊しました。あなたの答えに小さなタイポグラフィーエラーがあり、解析されたJSONは変数ではないオブジェクトだが、それでも問題は解決していないことがわかっています。奇妙なことに、JSONが正しくエコーされたので、PHPスクリプトが動作していることを知っています。 – T9b

関連する問題