|
wddx_serialize_value
Serialize a single value into a WDDX packet
(PHP 4, PHP 5)
Code Examples / Notes » wddx_serialize_valuechris
When serializing JavaScript objects to interact with PHP objects, you should make the JavaScript object's first entry a php_class_name. PHP: class myclass { var $name; var $age; var $ssn; ... function myclass() { $this->name = ""; $this->age = ""; $this->ssn = ""; ... } } JavaScript: // serialization example code is from the // WDDX SDK http://www.openwddx.org function SerializeMsg(name, age, ssn, ...) { var MyObj = new Object; // the following line is necessary in order // to deserialize back to a PHP object MyObj.php_class_name = "myclass"; MyObj.name = name; MyObj.age = age; MyObj.ssn = ssn; ... // Create a new serializer "object" to do our work for us MySer = new WddxSerializer; // Serialize the Message variable into a WDDX Packet MyWDDXPacket = MySer.serialize(MyObj); // Output WDDX Packet so we can see what it looks like return MyWDDXPacket; } Now you can use this in a page which is its own form action: <?php // don't forget to include the class definition from above! if (!isSet($wddx_packet)) $MyObj = new myclass(); else $MyObj = wddx_deserialize($wddx_packet); ?> <html> <head> <script language="JavaScript"> <!-- function Init() { // sets the form's text-elements tmp = document.MyForm; tmp.name.value = "<? echo $MyObj->name ?>"; tmp.age.value = "<? echo $MyObj->age ?>"; tmp.ssn.value = "<? echo $MyObj->ssn ?>"; ... } function SerializeMsg(name, age, ssn, ...) { // see above! } function SubmitForm() { // sumbits the form tmp = document.MyForm; tmp.wddx_packet.value = SerializeMsg(tmp.name.value, tmp.age.value, tmp.ssn.value,...); document.submit(); } // --> </script> </head> <body> ... <form name="MyForm" action="<? echo $PHP_SELF ?>" method="post"> <input name="wddx_packet" type="hidden"> <input name="name" type="text"> <input name="age" type="text"> <input name="ssn" type="text"> ... <input name="SubmitBtn" type="button" onclick="SumbitForm()"> </form> </body> </html> --------------------------------- If you don't provide that first 'php_class_name' in the JavaScript function, then when PHP deserializes it will deserialize into an associative array and not an object instance. Note that this provides a way to maintain state without using sessions or cookies - just good old HTML! Hope this helps! -- Chris Hansen |