Javascript js:处理从字段生成动态json
我想要一个带有动态键和值的动态生成的JSON,但不知怎么走错了方向。Javascript js:处理从字段生成动态json,javascript,jquery,Javascript,Jquery,我想要一个带有动态键和值的动态生成的JSON,但不知怎么走错了方向。中的每个字段都有一个数据键属性集,因此解析器知道键名: <input type="text" class="form-control" id="..." data-key="name" value="chicken"> <input type="text" class="form-c
中的每个字段都有一个数据键
属性集,因此解析器知道键名:
<input type="text" class="form-control" id="..." data-key="name" value="chicken">
<input type="text" class="form-control" id="..." data-key="price" value="4.10">
我尝试通过以下方式生成一个新的:
let form = document.querySelector('#productForm');
let number = document.querySelector('#productLabel').getAttribute("prodid");
keys = Object.keys(products[0].data); // ["name", "price"]
let d = {}
keys.forEach(function ( key ) {
for ( let fe = 0; fe < form.elements.length; fe++ ) {
if ( form.elements[fe].getAttribute("data-key") === key ) {
d[key] = form.elements[fe].value;
};
};
});
let return_json = {"number": number, "data": d};
没错,您正在使用jQuery的表单数据序列化,它正是这样做的(与PHP的默认值兼容) 您需要自己将数据字符串化为JSON,并设置正确的内容类型标题:
$.ajax({
url: "api/products/",
type: "PUT",
data: JSON.stringify(return_json),
headers: { "X-CSRFTOKEN": csrf_token, "Content-type": "application/json" },
// ...
});
你确定你的开发工具没有骗你吗?如果您执行
console.log(JSON.stringify(return_JSON))代码>?此输出<代码>{“数字”:“4957”,“数据”:{“名称”:“鸡肉”,“价格”:“4”}
。为什么在devtools/network/request中会出现这种情况?您是如何发出请求的?您是否尝试在ajax调用中将数据类型显式设置为JSON?是的,结果相同。
$.ajax({ url: "api/products/",
type: "PUT",
data: return_json,
headers: { 'X-CSRFTOKEN': csrf_token },
success: function () { ... },
error: function ( request, status, error ) { ... }
});
$.ajax({
url: "api/products/",
type: "PUT",
data: JSON.stringify(return_json),
headers: { "X-CSRFTOKEN": csrf_token, "Content-type": "application/json" },
// ...
});