gpt4 book ai didi

javascript - 为什么在保存带有额外数据的 Backbone 模型时需要使用 JSON.stringify : {} parameters?

转载 作者:行者123 更新时间:2023-11-30 12:54:08 24 4
gpt4 key购买 nike

我正在保存一个 Backbone 模型,我正在使用的 API 也需要传递“full=true”才能正常工作。所以例如要保存它需要做的:

myModel.save(null, { data: { full: true} });

但如果我这样做,它就不起作用,如果我查看 Chrome 开发工具中的网络选项卡,我会看到请求的 [object Object]:

enter image description here

另一方面,如果我使用 JSON.stringify,它似乎工作正常:

myModel.save(null, { data: JSON.stringify({ full: true}) });

enter image description here

当然,我每次都可以只使用 JSON.stringify,但我真的很想知道为什么会这样,这样我就可以创建一个自定义的 Backbone.sync...

最佳答案

我最终弄明白了,我会在这里回答我自己的问题,以防有人遇到同样的问题。

在通过 Backbone ajax 发送之前,数据对象最终需要是一个字符串。因为在第一种情况下我没有这样做,所以它是通过 native .toString() 方法强制转换为字符串的。例如:

var obj = {};
obj.toString(); //[object Object]

这对 API 没有意义。

在第二种情况下,因为我将数据对象字符串化,所以它工作正常。

Backbone.sync 确实使用模型属性将数据对象字符串化,但如果您传递显式数据对象,它会被覆盖:

if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {
params.contentType = 'application/json';
params.data = JSON.stringify(options.attrs || model.toJSON(options));
}

关于javascript - 为什么在保存带有额外数据的 Backbone 模型时需要使用 JSON.stringify : {} parameters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19865626/

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