我正在努力解决 <g:formRemote/> onSuccess
方法以及如何正确调用我的自定义 JavaScript
函数。
我有以下 formRemote
元素:
<g:formRemote name="userSearchRemoteForm"
url="[controller: 'userSearch', action: 'ajaxFindUser']"
onLoading="jQuery('#userSearchSubContainerHeadLoaderImage').show()"
onSuccess="createUserTable(data)"
onComplete="jQuery('#userSearchSubContainerHeadLoaderImage').hide()">
....</g:formRemote>
在 Debug模式下,我看到 Controller
函数 ajaxFindUser
被调用并返回一个有效的 JSON 对象,如下所示(来自 console
和 prettyPrint == true
):
{"success": {
"376440": {
"phone": "",
"email": "janeDoe@test.com",
"lastname": "Doe",
"firstname": "Jane"
},
"4146": {
"phone": "555-123456789",
"email": "johnDoe@test.com",
"lastname": "Doe",
"firstname": "John"
}
}}
我的 JavaScript
函数 createUserTable
如下所示:
function createGuestTable(data) {
console.log(data);
}
我在 WebDev 工具中看到的只是以下响应:
POST http://localhost:8080/GrailsTest001/userSearch/ajaxFindUser 404 (Not Found)
并且我的函数从未被调用。我还尝试像这样调用JavaScript function
中的onSuccess
:
onSuccess="createUserTable()"
但我仍然得到相同的结果......
我在这里做错了什么?
<小时/>编辑:清除所有内容 - 这是我的 Controller
函数:
def ajaxFindUser(UserSearchCommand userSearchCommand) {
println("... in ajaxFindUser()")
def result = [:]
if (userSearchCommand.hasErrors()) {
result['fail'] = "Error in search values!"
} else {
println("... creating values for search...")
def user = (User) session.getValue(theUser)
def inputMap = createInputMap(userSearchCommand)
def foundUsers = userSearchService.findUser(user.connectionID, user.language, inputMap)
if (foundUsers == null) {
println("... search returned NULL!")
result = [:]
result['fail'] = userSearchService.getError()
} else {
println("... search returned VALUES!!")
result['success'] = foundUsers
}
}
def jResult = result as JSON
println(".... returning JSON: ${jResult.toString(true)}")
return jResult
}
最佳答案
天啊! 我遇到了这个问题,但根本没有意识到这会成为一个问题......
我刚刚更改了 ajaxFindUser
函数的最后一行
return jResult
至
render jResult
带有以下onSuccess
参数
onSuccess="createUserTable(data)"
一切顺利!!
抱歉...
关于jquery - Grails + jQuery : formRemote onSuccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13266557/