Sorry, I found my stupidity: I forgot the ! in the condition :-( if (requestValue.isEmpty() && ajaxDispatchers.containsKey(requestValue.toString())) {
if (!requestValue.isEmpty() && ajaxDispatchers.containsKey(requestValue.toString())) { The JSON is now sent to the client, but wicket-ajax-jquery.js is creating an error because it's waiting for the tag ajax-response: wicket-ajax-jquery-ver-1722411717821.js:219 Wicket.Ajax.Call.failure: Error while parsing response: TypeError: envelope.getElementsByTagName is not a function Le sam. 16 nov. 2024 à 10:37, Stéphane V. <sva...@gmail.com> a écrit : > Hello everyone, > > I am working on making Ajax calls from a Panel/JavaScript component. This > component is entirely written in Typescript and uses a canvas element. The > only HTML elements within the Panel are <div><canvas></canvas></div> to > render the canvas. > > I would like to retrieve some information from the server when the > JavaScript component initializes. I was thinking of using Wicket.Ajax.get > for this. Throughout the lifecycle of the JavaScript component, additional > Ajax calls will be needed. > > On the server side, I believe I need to use an AbstractDefaultAjaxBehavior. > I want to use GET for retrieving data and POST with a JSON body for > sending data. > > Here’s my current implementation in the Panel: > > ajaxBehavior = new AbstractDefaultAjaxBehavior() { > @Override > protected void respond(AjaxRequestTarget target) { > final StringValue requestValue = > getRequest().getRequestParameters().getParameterValue("request"); > if (requestValue.isEmpty() && > ajaxDispatchers.containsKey(requestValue.toString())) { > final String request = requestValue.toString(); > ajaxDispatchers.get(request).execute(); > getRequestCycle().scheduleRequestHandlerAfterCurrent(new > TextRequestHandler("application/json", "UTF-8", > jsonService.toJson(Action.builder().action("translations").build()))); > } > } > }; > add(ajaxBehavior); > > Here is the code for the first Ajax call (TypeScript): > > Wicket.Ajax.get({ > u: ajaxCallbackUrl, > c: componentId, > ep: {'request':'translations'}, > dt: 'json', > sh: function (attributes: any) { > console.log("AJAX callback success:", attributes); > }, > fh: function (attributes: any) { > console.error("AJAX callback failure:", attributes); > } > }); > > The call is made to the server, but the JSON response is not parsed > correctly, and I get the following error in the browser console: > > Wicket.Ajax.Call.failure: Error while parsing response: SyntaxError: > Unexpected token '<', "<?xml vers" is not valid JSON > Indeed, the server response is and it's not the JSON I'm sending with my > panel: > <?xml version="1.0" encoding="UTF-8"?><ajax-response></ajax-response> > > Where did I go wrong? > > Thank you for your help! > > Regards, > > Stef >