Json列表到javascript对象来构建一个表单
Json list to javascript object to build a form
我不确定JSON的列表在解析为javascript对象时是如何工作的。但是,我更不习惯javascript,所以我的问题和提出的解决方案可能包含愚蠢的错误。我有一个JSON文件,我必须从中构建一个表单,所以我使用jQuery.parseJSON对其进行解析,以获得一个javascript对象。json文件如下:
{"Form": [{"Name":"Conan",
"Description":"Adventure",
"Value":"Children Movie"},
{"Name":"Sandocan",
"Description":"Adventure",
"Value":"Children Movie"},
{"Name":"Terminator",
"Description":"Sci-Fi",
"Value":"Action Movie"},
{"Name":"Iron Man",
"Description":"Adventure",
"Value":"Children Movie"}]}
从语法的角度来看,它应该是正确的。
处理它的代码在网页中,JSON代码通过模板标记{{line}}打印在页面中。我试着把它分配给一个变量,但我仍然不确定代码是否真的处理了它。然而,页面的代码如下:
<html><script src="../jquery.js">
</script>
<body><p> Data previously inserted: {{line}}</p>
<form action="/myform/" method="post">Choose the movie you prefer:<br />
<script language=javascript>
var lin={{line}}
var obj=jQuery.parseJSON(lin);
function str_to_obj(o){
document.write("Hello world");
for(item in o.Form) {
document.write(item.Name);
};
}
str_to_obj(obj);
</script>
<input type="radio" name="title"><br />
<input type="text" name="description"><br />
<input type="submit" value="Submit">
</form></body></html>
Firebug报告:
SyntaxError: invalid property id
var obj=jQuery.parseJSON({"Form": [{"Name":"Conan"
我肯定我在做一些傻事,但我必须让它发挥作用。
既然你用jQuery标记了它,为什么不这样做呢(假设你想把项目表示为单选按钮):
使用$.ajax
:获取json文件
$.ajax({
url: 'file.json',
dataType: 'json',
success: function(data){
//manipulate the parsed json here ('data')
}
});
没有ajax调用的"硬编码"示例:
var objectFromJson = $.parseJSON('{"Form":
[{"Name":"Conan","Description":"Adventure", "Value":"Children Movie"},
{"Name":"Sandocan","Description":"Adventure","Value":"Children Movie"},
{"Name":"Terminator","Description":"Sci-Fi", "Value":"Action Movie"},
{"Name":"Iron Man","Description":"Adventure","Value":"Children Movie"}]}');
$(function(){
$.each(objectFromJson.Form, function(k, v){
var $radio = $('<input/>')
.prop({ type: 'radio', id: v.Name, name: 'form' })
.val(v.Value),
$label = $('<label />')
.prop({ 'for': v.Name })
.text(v.Name)
.prepend($radio);
$('form[action="/myform/"]').append($label);
});
});
Fiddle
我认为问题出在";在您的JSON字符串中,这将使其无效。
如果您执行jsonString.replace(/"/g,'"');
以将所有"
替换为真正的引号。
请参阅这个js fiddle示例。
我会这样做:
进行ajax调用,用json填充var数据。
var data = '{"Form":
[{"Name":"Conan","Description":"Adventure", "Value":"Children Movie"},
{"Name":"Sandocan","Description":"Adventure","Value":"Children Movie"},
{"Name":"Terminator","Description":"Sci-Fi", "Value":"Action Movie"},
{"Name":"Iron Man","Description":"Adventure","Value":"Children Movie"}]}';
var obj = [];
$.each(data.Form, function(key,value) {
var tmpObj = {};
$.each(value, function(key2,value2){
tmpObj[key2] = value2;
});
obj.push(tmpObj);
});
这样你就可以在需要的时候使用obj
:
obj[0].Name // Conan
obj[0].Value // Children Movie
obj[1].Description // Adventure
相关文章:
- jquery mobile上多个页面上的一个表单
- 循环遍历包含另一个表单的表单
- 如何在javascript转换编码中将一个动态值从一个表单添加到另一个页面
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 如何通过 JS 将内容从一个表单中的一个文本框复制到另一个表单中的另一个文本框
- Slding表单不会一次显示一个表单
- html链接onclick弹出一个表单
- 使用 javascript 将值从一个表单传递到另一个表单
- 当在一个表单中进行更改时,ng-disabled 会触发所有表单验证
- 如何将一个表单中的项目添加到 Rails 中另一个表单的下拉选项
- 如何在一个表单标记中验证多个字段集
- 如何从一个表单的输入字段中获取数据,并使用JQuery在不同的表单中填充相同的输入类型
- 在PHP中将下拉选择列表的内容从一个表单传递到另一个表单
- 一个表单包含多个提交操作
- Javascript-更正用户名和密码以启用另一个表单
- 在ul后面添加一个表单
- angular js如何在提交一个表单时验证另一个表单
- 如何将某些HTML从一个页面转换为另一个表单
- 使用JavaScript将数据从一个表单显示到另一个页面
- 两个表单,一个选择/下拉框-需要将选择值从一个表单复制到另一个表单