Best way to transfer an array between PHP and Javascript [duplicate] Best way to transfer an array between PHP and Javascript [duplicate] arrays arrays

Best way to transfer an array between PHP and Javascript [duplicate]


I tend to use a JSON object for this:

  • On the server side, JSON encode your data: json_encode($data);
  • On the JavaScript side, I write a function that takes a JSON object as a parameter and unpack it.

When you unpack the object, you can print the array's contents into a <DIV> tag, or where ever you would like on the page (jQuery does a pretty sweet job of this).


If you're doing inline data, I've always been fond of doing

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

For basic stuff, saves you doing an AJAX callback. Also, if you want to glue data to a DOM node, the "metaobject" way is something I really love.

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

Now this may not look great, but its an effective way of associating data directly with a DOM node without needing to know the exact unique path to that node. Very handy if you have many many datasets that need to be attached to specific screen elements.

I usually use http://noteslog.com/metaobjects/ plugin for jQuery, but its so simple I have on occasion written it myself ( there was a time I couldn't find the plugin, but new how it worked )

When done, there will be

$("div#foobar > div").get().data.($yourarrayhere)

Visible to your code.


To follow up to your question (and my reply, I ran out of space on the comment reply), here is a very simplified subset of the code I use:

Javascript AJAX handler in 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;