在Javascript/jQuery中使用表单命名来访问json数据?
我有以下输入名称:在Javascript/jQuery中使用表单命名来访问json数据?,javascript,arrays,json,Javascript,Arrays,Json,我有以下输入名称:dynamic[elements][1][slider][image1] 执行ajax调用时,将返回带有设置及其值的json响应 $.ajax({ url: '/get/settings', type: 'POST', data: formData, async: false, success: function (data) { }); 如何以最简单的方式获取dynamic[e
dynamic[elements][1][slider][image1]
执行ajax调用时,将返回带有设置及其值的json响应
$.ajax({
url: '/get/settings',
type: 'POST',
data: formData,
async: false,
success: function (data) {
});
如何以最简单的方式获取dynamic[elements][1][slider][image1]
的值?它可以获得如下值:
data.dynamic.elements[1].slider.image1
因此:
但是,难道他们没有更好的方式获得价值吗?我必须获取值的唯一标识符是输入字段的名称,它是dynamic[elements][1][slider][image1]
。所以我需要提取这个字符串,并将其作为data.dynamic.elements[1].slider.image1组合在一起,然后以某种方式使其成为一个动态变量(最终获得值)
ajax响应示例:
{
"success": 1,
"dynamic": {
"elements": [
{
"title": {
"title": "Our beautiful topic"
}
},
{
"slider": {
"image1": "5zw3ucypzp3qham.png",
"image1_link": "hellor"
}
}
]
}
}
您可以选择编写泛型函数,以便从对象检索数据。函数应该如下所示。虽然函数可能不是万无一失的,但应该足以证明概念
function getObjectData(target, path) {
// if the path is not in dot notation first convert
if (path.indexOf(".") == -1)
path = path.replace(/\[/g, ".").replace(/\]/g, "");
var parts = path.split(".");
return parts.reduce(function (acc, currentVal) {
return acc ? (acc[currentVal] || undefined) : acc;
}, target);
}
//usage
getObjectData(data, "dynamic.elements.0.slider.image1"); //undefined
getObjectData(data, "dynamic.elements.1.slider.image1"); //5zw3ucypzp3qham.png
getObjectData(data, "dynamic[elements][1][slider][image1]"); //5zw3ucypzp3qham.png
希望这能有所帮助。展示您的示例ajax响应数据。您能在字段上放置一个id
吗?我不能在字段上放置id。将更新一个ajax响应示例,感谢您的贡献。看来这和我想达到的目标正好相反。。我想传递dynamic[elements][1][slider][image1]以获取数据对象中dynamic.elements.1.slider.image1的值。希望你能理解@Karem你可以简单地用点替换括号。我的最新答案说明了一种方法。
function getObjectData(target, path) {
// if the path is not in dot notation first convert
if (path.indexOf(".") == -1)
path = path.replace(/\[/g, ".").replace(/\]/g, "");
var parts = path.split(".");
return parts.reduce(function (acc, currentVal) {
return acc ? (acc[currentVal] || undefined) : acc;
}, target);
}
//usage
getObjectData(data, "dynamic.elements.0.slider.image1"); //undefined
getObjectData(data, "dynamic.elements.1.slider.image1"); //5zw3ucypzp3qham.png
getObjectData(data, "dynamic[elements][1][slider][image1]"); //5zw3ucypzp3qham.png