Question

I have a method in my controller

def returnJames = {
    JSONObject jsonObject = new JSONObject()
    jsonObject.put("name","James")
    return jsonObject
} 

and then I have a view:

<html>
<!--import gsp that has all the jquery imports-->
<script>
function changeName()
    {
        $.ajax({
            url:"<g:createLink url="[action:'returnJames',controller:'mycontroller']" />",
            dataType: "json",
            asnyc: false,
            success: function(data) {
                $('mytextbox').val(it.name)
            }
        });
    }
</script>
<g:form controller="mycontroller" method="post" >
<g:textField name="mytextbox" value="" />
<button name = "mybutton" id = "mybutton" onclick="changeName()">change name</button>
</g:form>
</html>

However it just tries to change the page to the index view of the mycontroller controller which doesn't exist. How can I get it to just fill in the textbox with "James"?

Was it helpful?

Solution

User render instead of return

render jsonObject

and change in jQuery

success: function(data) {
    $('#mytextbox').val(data.name)
}

change button to

<input type="button" id = "mybutton" onclick="changeName()" value="change name"/>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top