gpt4 book ai didi

ajax - Grails:Ajax响应为空

转载 作者:行者123 更新时间:2023-12-02 15:12:10 28 4
gpt4 key购买 nike

我想在有ajax请求时更改布局。所以我为此设置了一个过滤器:

class AjaxFilters {

def filters = {
ajaxify(controller: '*', action: '*') {
after = { Map model ->


if(model==null) {
model = new HashMap()
}

// only intercept AJAX requests
if (!request.xhr) {
model.put("layout", "mainUsers")
return true
}

// find our controller to see if the action is ajaxified
def artefact = grailsApplication
.getArtefactByLogicalPropertyName("Controller", controllerName)
if (!artefact) { return true }

// check if our action is ajaxified
def isAjaxified = artefact.clazz.declaredFields.find {
it.name == 'ajaxify'
} != null


def ajaxified = isAjaxified ? artefact.clazz?.ajaxify : []
if (actionName in ajaxified || '*' in ajaxified) {
model.put("layout", "ajax")
return false
}
return true
}
}
}
}

这将创建一个名为“layout”的 View 模型,该模型应定义要使用的布局。

这是使用布局模型的示例 View :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<meta name="layout" content="${layout}"/>
<title>Profile</title>
</head>
<body>
<h3>Edit Profile</h3>
</body>
</html>

这是 Controller :
class SettingsController {
def springSecurityService
static ajaxify = ["profile", "account"]

def profile() {
User user = springSecurityService.currentUser

UserProfile profile = UserProfile.findByUser(user)

if(profile == null) {
flash.error="Profile not found."
return
}

[profile: profile, user: user]
}
}

正常的请求可以正常工作,但是当我尝试使用一个ajax时,响应完全为空。仅发送标题。

最佳答案

model.put("layout", "ajax")之后,您不想返回false,而是返回true。返回false表示过滤器以某种方式失败,并中止了所有进一步的处理,这将导致空响应返回到浏览器。如果返回true,则更新的模型将在整个处理链中继续进行,并呈现在您的gsp中。

关于ajax - Grails:Ajax响应为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13002664/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com