这是我的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/