gpt4 book ai didi

javascript - Grails - 是否可以绑定(bind)已发布的 JS 对象中的字段(AJAX)

转载 作者:行者123 更新时间:2023-11-28 03:29:00 25 4
gpt4 key购买 nike

是否可以自定义数据绑定(bind),以便我可以简单地将对象传递给 AJAX post 请求,而不必列出所有参数(根据评论)?注释掉的行按预期绑定(bind)。

submitNewUser: function () {
const user = this.form
this.$http.post(`https://localhost:8443/api/saveUser`,
{data: user})
// {userName: user.userName, firstName: user.firstName, lastName: user.lastName, title: user.title, email: user.email})
.then(response => {
let user = response.data
this.users.push(user)
this.user = {userName: '', firstName: '', lastName: '', title: '', email: ''}
})
.catch(ex => console.error('Unable to save user', ex))
}

Grails 命令对象:

class SaveUserCommand {
String userName
String firstName
String lastName
String title
String email
}

表单对象:

  form: {
userName: null,
firstName: null,
lastName: null,
title: null,
email: null,
}

正在发送的 JSON 数据结构(从 devtools 检索);

{
data: {
userName: "New_user5"
email: "myemail@myuser.com"
firstName: "New"
lastName: "User"
title: "User Admin"
}
}

由注释掉的代码行生成的 JSON 数据结构;

{
userName: "New_user5"
email: "myemail@myuser.com"
firstName: "New"
lastName: "User"
title: "User Admin"
}

我希望这能在一定程度上澄清这个问题。

最佳答案

您确定您的命令对象是可验证的,即它是否与 Controller 位于同一个文件中,或者如果不是,是否用 @Validateable 注释?

如果您确定它是可验证的,您可以在浏览器控制台(开发工具)中执行JSON.stringify(user),以便我们可以看到您发送的数据的结构吗?

更新

这似乎是您要发送的数据的结构:

{
user: {
userName: "New_user5"
email: "myemail@myuser.com"
firstName: "New"
lastName: "User"
title: "User Admin"
}
}

并且您尝试将其绑定(bind)到:

class SaveUserCommand {
String userName
String firstName
String lastName
String title
String email
}

绑定(bind)失败,因为对象不具有相同的属性,因此您有两个选择:

选项 1:更改请求数据

改为发送此内容:

{
userName: "New_user5"
email: "myemail@myuser.com"
firstName: "New"
lastName: "User"
title: "User Admin"
}

我希望这是两个选项中更容易的一个,您可能只需要替换:

{data: user}

与:

{data: this.form.user}

选项 2:更改命令对象

将请求数据绑定(bind)到此

@Validateable
class SaveUserCommand {
UserData user
}

@Validateable
class UserData {
String userName
String firstName
String lastName
String title
String email
}

关于javascript - Grails - 是否可以绑定(bind)已发布的 JS 对象中的字段(AJAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58339837/

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