[ 
https://issues.apache.org/jira/browse/JSPWIKI-566?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14291254#comment-14291254
 ] 

brushed commented on JSPWIKI-566:
---------------------------------

Hi David,

I appreciate the work you are doing on the json-rpc.  I believe your approach 
simplifies 
an greatly improves this capability in JSPWiki.  Nice.

I do like the way the current json-rpc handles errors and supports flexible 
parameters;
and would like to suggest to adopt a similar but simplified api, if possible.

Rather then encoding everything in the URL with "/",  we could pass the method 
and the 
parameters as a JSON object to the server.  (as post data)

Also the return data could be encoded as a JSON object { result: ..., error: 
"error-message" }

Here is an example how the client side would look like :
{noformat}
ajaxJsonCall: function(method, params, callback){
  //the Request.JSON does all encoding and decoding of the JSON automatically
  new Request.JSON{{
    url: this.JsonURL,
    method:'post', 
    onSuccess: function(response){
        if(response.error){
            console.log(response.error);
            callback(null);
        } else {
            callback(response.result)
        }
    },
    onError: function(response){
            console.log(response.error);
            callback(null);
    }
  }).send({
        //id: JSONid++  //strictly spoken not needed;  but might be useful for 
troubleshooting ?
        method: method,
        params: params
    });
},
{noformat}

The method would be eg "search.findPages" separated with dots,  and parameters 
could be any other data.
{noformat}
    AjaxJsonCall("search.findPages", ["test",20], function(result){ ... })
{noformat}

BTW, when using jQuery,  this would be very similar, replacing new Request.JSON 
by something like $.getJSON(...)


> AJAX server-side rewrite
> ------------------------
>
>                 Key: JSPWIKI-566
>                 URL: https://issues.apache.org/jira/browse/JSPWIKI-566
>             Project: JSPWiki
>          Issue Type: Improvement
>          Components: Core & storage
>    Affects Versions: 2.10.1
>            Reporter: Janne Jalkanen
>            Assignee: David Vittor
>         Attachments: ajaxDispatchServlet.patch, ajaxFunctions.patch, 
> ajaxFunctions.patch, ajaxFunctions.patch, ajaxFunctions.patch, test.html
>
>
> The AJAX library we're currently using is a bit problematic, as it stores 
> non-serializable stuff in the HttpSession (causing all sorts of nasty 
> exception reports in default configurations of Tomcat, and preventing 
> clustering).  It does provide a very nice, reflection-based interface so that 
> we can expose any class/method as a JSON endpoint, but this does not really 
> work well with our auth system.
> We should replace the jabsorb stuff with a Stripes-native solution (possibly 
> with some extensions to allow particular beans to expose methods as if we 
> were using jabsorb).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to