Executing multi-valued web service calls from javascript

Monday, October 31, 2005

I'm currently working hard on a web based business system for a theatre agency here in Denmark. Client-side business logic communicates through web service calls with server-side business logic.

I'm using the web service proxies that Matthias Hertels AJAX Engine generates, but I was unable to use ajax.Start to execute multi-valued calls.

Maybe I overlooked something? :) Anyway, I came up with a fix for it...

This an example of a multi-valued call:

  var Add = {
    delay: 200,
    prepare: function() { return [34, 23]; },
    call: proxies.AddService.Add,
    finish: function (p) {
      alert("Sum: " + p);
    onException: proxies.alertException


I changed some lines in Ajax.js. After this:

      // start the call
      ca.call.func = ajax.Finsh;
      ca.call.onException = ajax.Exception;

I added this:

      // multi-valued call (new)
      if ((typeof(data)=="object") && (data!=null) && data.length) {
        ca.args = new Object();
        var aArg = new Array();
        for (var i = 0; i<data.length; i++) {
          ca.args["a" + i] = data[i];
          aArg[aArg.length] = "a" + i;
        with (ca.args) {
          eval("ca.call(" + aArg.join(",") + ")");
      // single-valued call
      else { 

And it worked. I hope you can use this.


Anonymous Anonymous said...

why not use your own OutPost for AJAX enviroment?

When will you release new version of OutPost? And new example for starter kit?


6:11 PM  
Blogger Troels Wittrup said...

OutPost is intended for WebForms, not for pure business logic. So instead of adding a hidden WebForm on the page and using OutPost to call the server through post backs on the web form, I think it is more appropiate to call the server through a web service.

At the moment I am very busy in my company, so I hope to have a new release ready at the end of this month.

I am not sure that OutPost will ever support Forms Authentication, but one should be able to use it anyway, just not on the login web form. I have already spent many nights trying to solve that...

12:22 AM  

Post a Comment

<< Home