Thanks for the clear explanation Martin.

On Wed, Jan 18, 2017, 8:30 PM Martin Grigorov <[email protected]> wrote:

> On Wed, Jan 18, 2017 at 10:35 AM, James Selvakumar <[email protected]>
> wrote:
>
> > Hi Martin,
> >
> > Is it possible to return a value from the ajax behavior while responding
> to
> > the ajax call?
> > I'm trying to do something like this in the server side:
> >
> > target.appendJavaScript("foo");
> > >
> >
> > And then try to use it in my JavaScript:
> >
> > var foo = Wicket.Ajax.get({ u: window.callbackUrl });
> >
>
> .get() makes an Ajax call, so it doesn't return a value
> You can use the callback methods (complete, success, failure) to get the
> returned response from the server
>
> But I think you don't need to use 'foo' from the server as a variable.
> You really need: target.appendJavaScript("doNextStep(foo)")
> I.e. execute something else once the Ajax call returns
>
>
>
> > > //do some processing with foo
> > >
> >
> > Is this valid? Or is there a better way?
> >
> >
> >
> > On Wed, Jan 18, 2017 at 5:26 PM, James Selvakumar <[email protected]>
> > wrote:
> >
> > > Thanks a lot Martin. You're right. I had something else in my code and
> > > after I fixed it, I managed to make a ajax call from JavaScript.
> > >
> > > On Wed, Jan 18, 2017 at 5:07 PM, Martin Grigorov <[email protected]
> >
> > > wrote:
> > >
> > >> There is no variable named 'a' in your code snippet.
> > >> It might be another problem.
> > >>
> > >> Martin Grigorov
> > >> Wicket Training and Consulting
> > >> https://twitter.com/mtgrigorov
> > >>
> > >> On Wed, Jan 18, 2017 at 10:04 AM, James Selvakumar <
> [email protected]
> > >
> > >> wrote:
> > >>
> > >> > Hi Martin,
> > >> >
> > >> > I tried your suggestion but I'm still getting the same TypeError.
> > >> >
> > >> > On Wed, Jan 18, 2017 at 4:55 PM, James Selvakumar <
> > [email protected]>
> > >> > wrote:
> > >> >
> > >> > > Thanks Martin for the super fast reply. I'll try that out.
> > >> > >
> > >> > > On Wed, Jan 18, 2017 at 4:54 PM, Martin Grigorov <
> > >> [email protected]>
> > >> > > wrote:
> > >> > >
> > >> > >> var wcall = Wicket.Ajax.get({ u: '${callbackUrl}'});
> > >> > >> should be
> > >> > >> var wcall = Wicket.Ajax.get({ u: window.callbackUrl });
> > >> > >>
> > >> > >> Martin Grigorov
> > >> > >> Wicket Training and Consulting
> > >> > >> https://twitter.com/mtgrigorov
> > >> > >>
> > >> > >> On Wed, Jan 18, 2017 at 9:51 AM, James Selvakumar <
> > >> [email protected]>
> > >> > >> wrote:
> > >> > >>
> > >> > >> > Dear Wicket team,
> > >> > >> >
> > >> > >> > I need to make a call to a Wicket page from my JavaScript
> > function.
> > >> > >> > I followed the guide Calling Wicket from Javascript
> > >> > >> > <https://cwiki.apache.org/confluence/display/WICKET/
> > >> > >> > Calling+Wicket+from+Javascript>
> > >> > >> > and managed to define an ajax behavior to respond to the
> > JavaScript
> > >> > >> call.
> > >> > >> >
> > >> > >> > My ajax behavior looks like this:
> > >> > >> >
> > >> > >> > > private final AbstractDefaultAjaxBehavior behave = new
> > >> > >> > AbstractDefaultAjaxBehavior()
> > >> > >> > > {
> > >> > >> > >     protected void respond(final AjaxRequestTarget target)
> > >> > >> > >     {
> > >> > >> > >         LOGGER.debug("Received a request from client to get
> the
> > >> > >> > encryption key");
> > >> > >> > >         target.add(new Label("foo", "Yeah I was just called
> > from
> > >> > >> > Javascript!"));
> > >> > >> > >     }
> > >> > >> > >
> > >> > >> > >     public void renderHead(Component component,
> IHeaderResponse
> > >> > >> response)
> > >> > >> > >     {
> > >> > >> > >         super.renderHead(component, response);
> > >> > >> > >         String callbackUrl = getCallbackUrl().toString();
> > >> > >> > >         response.render(JavaScriptHeaderItem.forScript("var
> > >> > >> > callbackUrl='" + callbackUrl + "';", "values"));
> > >> > >> > >     }
> > >> > >> > > };
> > >> > >> > >
> > >> > >> > > This callback url got rendered in the page like this:
> > >> > >> >
> > >> > >> > <script id="values" type="text/javascript">
> > >> > >> > > /*<![CDATA[*/
> > >> > >> > > var callbackUrl='./wicket/page?0-1.IBehaviorListener.0-';
> > >> > >> > > /*]]>*/
> > >> > >> > > </script>
> > >> > >> > >
> > >> > >> >
> > >> > >> >
> > >> > >> > And here is my JavaScript code:
> > >> > >> >
> > >> > >> > > var wcall = Wicket.Ajax.get({ u: '${callbackUrl}'});
> > >> > >> > > alert(wcall);
> > >> > >> > >
> > >> > >> > > But I'm getting the following error in the Wicket Ajax Debug
> > >> Window:
> > >> > >> >
> > >> > >> > *An error occurred while executing Ajax request:TypeError: a is
> > >> > >> undefined*
> > >> > >> > >
> > >> > >> >
> > >> > >> > Can someone point out what's the mistake here?
> > >> > >> >
> > >> > >> > --
> > >> > >> > Thanks & regards
> > >> > >> > James
> > >> > >> >
> > >> > >>
> > >> > >
> > >> > >
> > >> > >
> > >> > > --
> > >> > > Thanks & regards
> > >> > > James Selvakumar
> > >> > >
> > >> >
> > >> >
> > >> >
> > >> > --
> > >> > Thanks & regards
> > >> > James
> > >> >
> > >>
> > >
> > >
> > >
> > > --
> > > Thanks & regards
> > > James
> > >
> >
> >
> >
> > --
> > Thanks & regards
> > James
> >
>

Reply via email to