这是我的JavaScript代码的一部分:

 ${remoteFunction(controller: 'job', action: 'updateTimeStamp', update: 'randomString', params: '{timeStamp:timeStamp, sessionId:sessionId}')};
 var jobIsDone = ${remoteFunction(controller: 'job', action: 'jobIsDone', params: '{sessionId:sessionId}')};

第一行按预期工作,第二行给我404异常。 jobIsDone()方法不呈现任何内容。我找不到对remoteFunction标记的正确解释,但是据我了解它可以在不渲染的情况下使用,我误会了吗?

这是 Controller 方法:
def updateTimeStamp(){
    timeStampMap.putAt(params.sessionId, params.timeStamp)
    def randomString = bcvjobService.saySomething()
    render  "<p>${randomString}</p>"
}


def jobIsDone(){
    if (jobDone.get(params.sessionId)){
        return true
    }
    else return false
}

最佳答案

试试这个:

def jobIsDone(){

    if (jobDone.get(params.sessionId)){
        response.sendError(200,"ok")
    }
    else {
 response.sendError(500,"error")
}

}

这样可以防止找不到404。如果您希望返回带有JSON的true或false,例如:
def jobIsDone(){
    def result = [error:true]
    if (jobDone.get(params.sessionId)){
        result.error = false
    }
    render result as JSON

}

关于grails - 如果没有渲染,remoteFunction将无法工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27039315/

10-10 08:57