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;