phpfreakjav Posted July 3, 2009 Share Posted July 3, 2009 I just wanted to share this code because it took me a while to figure howto do this. <html> <head> <script language="Javascript"> //alternative 1 function php_serialize(obj) { var string = ''; if (typeof(obj) == 'object') { if (obj instanceof Array) { string = 'a:'; tmpstring = ''; count = 0; for (var key in obj) { tmpstring += php_serialize(key); tmpstring += php_serialize(obj[key]); count++; } string += count + ':{'; string += tmpstring; string += '}'; } else if (obj instanceof Object) { classname = obj.toString(); if (classname == '[object Object]') { classname = 'StdClass'; } string = 'O:' + classname.length + ':"' + classname + '":'; tmpstring = ''; count = 0; for (var key in obj) { tmpstring += php_serialize(key); if (obj[key]) { tmpstring += php_serialize(obj[key]); } else { tmpstring += php_serialize(''); } count++; } string += count + ':{' + tmpstring + '}'; } } else { switch (typeof(obj)) { case 'number': if (obj - Math.floor(obj) != 0) { string += 'd:' + obj + ';'; } else { string += 'i:' + obj + ';'; } break; case 'string': string += 's:' + obj.length + ':"' + obj + '";'; break; case 'boolean': if (obj) { string += 'b:1;'; } else { string += 'b:0;'; } break; } } return string; } function displayArray(x) {//only displays 1 dimensional array for (i=0;i<x.length;i++) { document.write(x[i] + "<br >"); } } //alternative 2 function js_array_to_php_array (a) // This converts a javascript array to a string in PHP serialized format. // This is useful for passing arrays to PHP. On the PHP side you can // unserialize this string from a cookie or request variable. For example, // assuming you used javascript to set a cookie called "php_array" // to the value of a javascript array then you can restore the cookie // from PHP like this: // <?php // session_start(); // $my_array = unserialize(urldecode(stripslashes($_COOKIE['php_array']))); // print_r ($my_array); // ?> // This automatically converts both keys and values to strings. // The return string is not URL escaped, so you must call the // Javascript "escape()" function before you pass this string to PHP. { var a_php = ""; var total = 0; for (var key in a) { ++ total; a_php = a_php + "s:" + String(key).length + ":\"" + String(key) + "\";s:" + String(a[key]).length + ":\"" + String(a[key]) + "\";"; } a_php = "a:" + total + ":{" + a_php + "}"; return a_php; } var x = new Array("1","2"); var x1=new Array(); x1=x; displayArray(x); displayArray(x1); document.write("Serializing starts <br/>"); x=php_serialize(x); displayArray(x); document.write("Serializing starts <br/>"); x1=js_array_to_php_array(x); displayArray(x1); escape(); </script> </head> <body></body> </html> Link to comment https://forums.phpfreaks.com/topic/164628-javascript-serialize-a-js-arrary-into-a-php-array/ Share on other sites More sharing options...
celsoendo Posted July 4, 2009 Share Posted July 4, 2009 Try: http://phpjs.org and be happy! Link to comment https://forums.phpfreaks.com/topic/164628-javascript-serialize-a-js-arrary-into-a-php-array/#findComment-868623 Share on other sites More sharing options...
xenophobia Posted July 4, 2009 Share Posted July 4, 2009 I would suggest using JSON. Link to comment https://forums.phpfreaks.com/topic/164628-javascript-serialize-a-js-arrary-into-a-php-array/#findComment-868723 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.