Implement Ajax call in Grails web-flow
In one of my recent project, i want to use grails web-flow with ajax call. It’s very easy to implement the web-flow with ajax call. Grails web-flow always track the actions on the basis of eventId & flow execution key. So, to implement ajax call in web-flow, we have to pass the event id & flow execution key.
1. Let us assume, we have the following web- flow code in grails.
[groovy]
def stepFlow ={
first{
action{
code…..
}on ("success"){code…}.to("second")
}
second{
on("third"){
}.to("fourth")
}
fourth();
}
[/groovy]
In this case, step is web flow name, for each call we have to pass step as request uri . First, second and third are events, events are always tracked through flow execution key
2. We want to call the event third through ajax call. For this we have to write the following code in ajax.
[javascript]
function callAjaxFunctionInWebFlow(eventType,flowExecutionKey){
$.ajax({
url:"project-name/step",
type:’POST’,
data:’_eventId=’ + eventType + ‘&execution=’ + flowExecutionKey,
success:function (result) {
},
error:function (jqXHR, textStatus, errorThrown) {
}
})
}
[/javascript]
3. To call this function from GSP we have to write the following code.
[html]
<a href=’javascript:void(0)’ onclick="callAjaxFunctionInWebFlow(‘third’,’${request.flowExecutionKey}’)">Click</a>
[/html]
In this function callAjaxFunctionInWebFlow(‘third’,’${request.flowExecutionKey}’) third is eventId that we want to call, request.flowExecutionKey gives the current execution key that need to pass through each ajax call.
Hope it will help.
Thanks & Regards,
Mohit Garg
mohit@intelligrape.com
@gargmohit143
You actually make it appear really easy along with your presentation however I to find this topic to be actually something which I feel I would never understand. It sort of feels too complicated and extremely broad for me. I’m looking forward for your subsequent submit, I’ll try to get the dangle of it!
one question i have,
So the ajax call needs data to be returned from webflow..
How can we return data from webflow. I added some code in third step
def stepFlow ={
first{
action{
code…..
}on (“success”){code…}.to(“second”)
}
second{
on(“third”){
def map= [:]
map.id=’1′
return map as json //render map as json
}.to(“fourth”)
}
fourth();
}
Good example. There seems also a plugin now that helps in doing ajaxifying webflow.