On 03/02/2010 01:15 AM, Jeremie BOUSQUET wrote:
Hello,
This is for something I'm trying to develop ... And I'm not sure it has
something to do with XWiki, but who knows ?
In a page I call a particular init() function like this :
Event.observe(window, "load", init);
This init() aims at loading some JSON data from another page using Ajax. I
was inspired by the livetable.js here :-)
var json = ""
var ajx=new Ajax.Request( "
http://localhost:8081/xwiki/bin/view/Dev/JSONProvider?xpage=plain&outpu…ain",
{method:"get", onSuccess:function(transport) { json =
eval("("+transport.responseText+")"); }
}
)
Wait, do you use json here, after the new Ajax.Request? You can't do
that. You should put the code using json inside the onSuccess handler.
Alternatively, you can add
asynchronous: false,
to the list of parameters to make the call synchronous, which means that
the new Ajax.Request line will block until the response arrives. But
this is bad for several reasons: in most of the current browsers it
blocks the entire browser until the response arrives, so if the server
is slow to respond, you'll lock the user outside the browser; the method
might fail, so onSuccess will not be called, and json will still have
the wrong value.
This Javascript is in a .js file along with other
resources on the server
filesystem. It is loaded with $xwiki.jsfx.use(...) .
When I debug step by step using Firebug, everything is fine, "json" variable
contains what I expect.
But when I'm not debugging and refresh the page, "json" variable is empty
... (breakpointing AFTER ajax call shows it). Though I can see in Firebug
that my Ajax http request finished with a 200 OK code.
Do you think it might be linked to the fact this method is called on page
load ? I can't see how it's different than other ajax calls in xwiki ...
--
Sergiu Dumitriu
http://purl.org/net/sergiu/