я могу ввести данные непосредственно в хранилище сеанса от выбранных данных на стороне сервера? - PullRequest
2 голосов
/ 10 сентября 2011

Мне интересно, возможно ли сделать выборку на стороне сервера в базе данных 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, я бы дождался ответа и мог бы проанализироватьрезультат и справиться с этим таким образом.Но этот метод инициируется на стороне клиента и фактически является вторым запросом к серверу.

Но мне было интересно, можно ли этого достичь в абсолютном начальном запросе страницы, т.е. на самом первомзапросить, получить данные и каким-то образом внедрить их непосредственно в хранилище сеанса одновременно с первой страницей.

Пожалуйста, прокомментируйте, если принцип не ясен.

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Как именно веб-сервер должен получить доступ к браузеру для хранения этих данных?До тех пор, пока API-интерфейс websockets не станет более распространенным, сервер может отправлять данные клиенту только тогда, когда клиент инициирует запрос.Вы не можете просто «достучаться» до браузера и вставить в него данные.

Если вы хотите сделать это во время первоначального запроса страницы, вы всегда можете вставить данные на отправляемую страницу

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

Это создаст "толстую" страницу, но отправит данные в том же запросе.Любой другой метод потребует второго подключения к серверу.

0 голосов
/ 10 сентября 2011

Возможно, я неправильно понимаю вопрос, но если вы хотите вставить что-то в LocalStorage при первой загрузке страницы, просто загрузите это в переменную Javascript, а затем вставьте.Например:

...

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

Затем просто работайте с dataToInsert, как с любой другой переменной JS.

...