1
我正在用<g:formRemote/> onSuccess
方法掙扎,以及如何正確調用我自定義的JavaScript
函數。Grails + jQuery:formRemote onSuccess
我有以下formRemote
元件:
<g:formRemote name="userSearchRemoteForm"
url="[controller: 'userSearch', action: 'ajaxFindUser']"
onLoading="jQuery('#userSearchSubContainerHeadLoaderImage').show()"
onSuccess="createUserTable(data)"
onComplete="jQuery('#userSearchSubContainerHeadLoaderImage').hide()">
....</g:formRemote>
在調試模式下我看到
,該Controller
函數ajaxFindUser
被調用並返回這樣一個有效的JSON對象(從console
與prettyPrint == true
):
{"success": {
"376440": {
"phone": "",
"email": "[email protected]",
"lastname": "Doe",
"firstname": "Jane"
},
"4146": {
"phone": "555-123456789",
"email": "[email protected]",
"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
}
表示未找到頁面,如果您將此鏈接直接放入您的瀏覽器地址欄,結果如何? –
但是,如果控制器功能無法訪問,爲什麼會被調用?我必須'返回'除'JSON'對象之外的東西嗎?我必須告訴控制器不要特別渲染任何東西嗎?實際上,如果我嘗試在瀏覽器中輸入url,我也得到了404,但對我來說這很明顯,因爲所有控制器功能都是取得一個Command對象並在成功或失敗時返回一個JSON對象,所以它無法到達 - 或者沒有? – herom