r9134: added the client side js library code for handling remote 'AJAJ' calls
[kai/samba.git] / swat / scripting / client / call.js
1 /*
2         client side js functions for remote calls into the server
3
4         Copyright Andrew Tridgell 2005
5         released under the GNU GPL Version 2 or later
6 */
7
8
9 /*
10         usage:
11
12           server_call(url, func, callback, ...);
13
14         'func' is a function name to call on the server
15         any additional arguments are passed to func() on the server
16
17         The callback() function is called with the returned
18         object. 'callback' may be null.
19 */
20 function server_call(url, func, callback) {
21         var req = new XMLHttpRequest();
22         req.open("POST", url, true);
23         req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
24         var args = new Object();
25         var i;
26         for (i=3;i<arguments.length;i++) {
27                 args[i-3] = arguments[i];
28         }
29         args.length = i-3;
30         req.send("func=" + func + "&args=" + encodeObject(args));
31         req.onreadystatechange = function() { 
32                 if (4 == req.readyState && callback != null) {
33                         var o = decodeObject(req.responseText);
34                         callback(o.res);
35                 }
36         }
37 }
38