phpbar.de logo

Mailinglisten-Archive

[php] OT: JPSPAN, JS-Array von Client nach Server übertragen

[php] OT: JPSPAN, JS-Array von Client nach Server übertragen

Olaf Krüger OKrueger at edscha.com
Don Feb 10 16:33:06 CET 2005


Hallo,
vielleicht hat sich von Euch schonmal jemand mit JPSpan beschäftigt... 
 
Ich möchte XUL einsetzten und JPSpan zur Kommunikation JavaScript/PHP verwenden.
Kann mir jemand vermitteln, wie man mit JPSpan ein JavaScript-Array in ein PHP-Array umwandelt ?
Eigentlich hatte ich gehofft JPSpan würde das im Hintergrund automatisch erledigen... oder ist es in JPSpan so 
vorgesehen, dass man das Array serialisieren bzw. deserialisieren muss ?
Die JPSpan Doku hilft mir irgendwie nicht weiter.
 
 
 
Hier mal ein Codeschnipsel: 
In diesem Beispiel soll die Methode addComponent() über JavaScript aufgerufen werden, die wiederum die gleichnamige php-Methode
aufruft und die Werte des als Parameter übergebenen Array in die DB speichern soll.
Im Moment erhalte ich folgende Fehlermeldung:
"[Server Error] Undefined Index: Description while calling components.addcomponent()"
Andere Datentypen wie Strings oder Integer machen keine Probleme.
 

Bin für jeden Tipp dankbar :-)
 
Gruss
Olaf
 
Beispiel:
 
/**
* PHP-Klasse
*/
class components {
   .....
  
   /**
   * save new component into DB
   *
   * @param    array      $arr_data     
   * @since    1.0
   * @access   public
   * @return   boolean
   */ 
   function addComponent($arr_data) {
      ....
     // save data into DB 
     $this->putArray($arr_data);
      ....
   }
 
   ....
}
 
 
/**
* JPSpan-Client
*/
function addComponent() {
 
        // Create the client object, passing the async
        // handler. Note lower case!
        var c = new components(ResponseHandler);

        var arr_data = new Array;
      
        arr_data["foo"]     = "foo";
        arr_data["bar"]    = "bar";
        
        // Call the remote method (method lower case!)
        c.addcomponent(arr_data);
}
 
// A handler is required to accept the response
// of asychronous calls...
var ResponseHandler = {
 
        // Function must have same name as remote method
        addcomponent: function(result) {
            alert(result);
        }
}
 
// call function
addComponent();

 
 
 
/**
* JPSpan-Server
*/
// Create the PostOffice server
$S = & new JPSpan_Server_PostOffice();
 
// Register your class with it...
$S->RequestEncoding = 'php';
$S->addHandler(new components($dsn));
 
// This allows the JavaScript to be seen by
// just adding ?client to the end of the
// server's URL
 
if (isset($_SERVER['QUERY_STRING']) &&
        strcasecmp($_SERVER['QUERY_STRING'], 'client')==0) {
 
    // Compress the output Javascript (e.g. strip whitespace)
    define('JPSPAN_INCLUDE_COMPRESS',TRUE);
 
    // Display the Javascript client
    $S->displayClient();
 
} else {
 
    // This is where the real serving happens...
    // Include error handler
    // PHP errors, warnings and notices serialized to JS
    require_once JPSPAN . 'ErrorHandler.php';
 
    // Start serving requests...
    $S->serve();
}
 


php::bar PHP Wiki   -   Listenarchive