1

メソッドと、カスタム関数を適切<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>

デバッグモードでは、Controller関数ajaxFindUserが呼び出され、次のような有効な JSON オブジェクトを返すことがわかります ( consolewithから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
}
4

1 に答える 1

3

オーマイ!私は問題に直面していましたが、それが問題になるとはまったく認識していませんでした...

ajaxFindUser関数の最後の行を

return jResult

render jResult

次のonSuccessパラメータで

onSuccess="createUserTable(data)"

そして、すべてがうまくいっています!!

そのために残念...

于 2012-11-07T09:45:36.507 に答える