Лучший способ передать массив между PHP и JavaScript [дубликат]

19
задан Click Upvote 11 September 2012 в 19:04
поделиться

3 ответа

Я склонен использовать объект JSON для этого:

  • На стороне сервера, JSON кодируют Ваши данные: json_encode($data);
  • На стороне JavaScript, я пишу функцию, которая берет объект JSON в качестве параметра, и распакуйте ее.

при распаковке объекта можно распечатать содержание массива в <DIV> тег, или где когда-либо Вы хотели бы на странице (jQuery делает довольно сладкое задание этого).

29
ответ дан 30 November 2019 в 03:08
поделиться

Для следования до вопроса (и мой ответ, у меня закончилось пространство на ответе комментария), вот, очень упрощенное подмножество кода, который я использую:

обработчик Ajax JavaScript в jQuery:

$.ajax({
   type: "POST",
   url: "BACKEND.php",
   timeout: 8000,
   data: "var1=" + myVar,
   dataType: "json",
   error: function(){
     $("#DIVID").html("<div class='error'>Error!</div>");
   },  
   success: function(jsonObj){
     $("#DIVID").html(jsonObj.mydata);
   }
 });


PHP Array:
$data['mydata'] = $myData;
1
ответ дан 30 November 2019 в 03:08
поделиться

Если Вы делаете встроенные данные, я всегда любил выполнение

<script type="text/javascript">
window.sitescriptdata = {}; 
window.sitescriptdata.foo = ( <?php echo json_encode( $structure ); ?> );
</script>

Для основного материала, сохраняет Вас делающий обратный вызов Ajax. Кроме того, если Вы хотите склеить данные к узлу DOM, "метаобъект", путь - что-то, что я действительно люблю.

<div id="foobar">
 <div><object class="metaobject">
        <param name="data" value="<?php echo htmlentities(json_encode($data), ENT_QUOTES );?>" />
 </object></div>
</div> 

Теперь это не может выглядеть большим, но эффективный способ связать данные непосредственно с узлом DOM, не будучи должен знать точный уникальный путь к тому узлу. Очень удобный, если у Вас есть много много наборов данных, которые должны быть присоединены к определенным экранным элементам.

я обычно использую http://noteslog.com/metaobjects/ плагин для jQuery, но его настолько простой я при случае записал это сам (было время, я не мог найти плагин, но новый, как он работал)

При выполнении будет

$ ("div#foobar> отделение") .get () .data.($yourarrayhere)

Видимый к коду.

12
ответ дан 30 November 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: