将JSON字符串存储在输入字段值中
如何将Json字符串存储在隐藏的输入字段中。 好吧,我可以通过编程方式完成它,但是转发出错了。 由于我的字符串适度长,很难逃脱“所有名称的字符。请解释它是如何以编程方式工作(第1阶段),因为控制台输出看起来相同。
[{"X":0,"Y":0,"W":0,"H":500},{"X":358,"Y":62,"W":200,"H":500}]test2.html:21 [{"X":0,"Y":0,"W":0,"H":500},{"X":358,"Y":62,"W":200,"H":500}] test2.html:22 PASSED PHASE 1
jquery.min.js:16Uncaught SyntaxError: Unexpected end of input
谢谢,
BSR。
Test $(document).ready(function() { myItems = [{"X":0,"Y":0,"W":0,"H":500}, {"X":358,"Y":62,"W":200,"H":500}] console.log(JSON.stringify(myItems)); $("#jsondata").val(JSON.stringify(myItems)); console.log(document.getElementById("jsondata").value); console.log("PASSED PHASE 1"); var obj = jQuery.parseJSON($("#jsondata2").val()); console.log(obj.length); console.log("PASSED PHASE 2"); });
编辑:
以下代码有效..不确定它是否正确。 所以将一个很好的解释标记为答案。 谢谢。
Test $(document).ready(function() { myItems = [{"X":0,"Y":0,"W":0,"H":500}, {"X":358,"Y":62,"W":200,"H":500}] console.log(JSON.stringify(myItems)); $("#jsondata").val(JSON.stringify(myItems)); console.log(document.getElementById("jsondata").value); console.log("PASSED PHASE 1"); var obj = jQuery.parseJSON($("#jsondata2").val()); console.log($("#jsondata2").val()); console.log(obj[0].H); console.log("PASSED PHASE 2"); });
html标记无效…如果你再次运行htmlvalidation器第一个html(非工作的),你会发现错误的行…
是不正确的。 在值字符串中使用单引号'
而不是双引号"
来修复它(或转义"
)
你可以做这样的事情,但是非常糟糕,HTML:
和JS
$(function(){ var myItems = [{"X":0,"Y":0,"W":0,"H":500}, {"X":358,"Y":62,"W":200,"H":500}] $("#jsondata").val(JSON.stringify(myItems)); });
请参阅有关报价的答案。
原因很简单 – 当你有这个代码时:
[sometag someattr =“qwerty”123“:cxzcxz”/]
浏览器将其理解为:
[sometag someattr =“qwerty”/]
最后一部分(123“:cxzcxz”)只是作为一个垃圾扔掉了。 所以对于你的具体案例,parseJSON尝试使用这个:
[{
但你认为它是一个完整的字符串:
[{ “X”:0, “Y”:0, “W”:0, “H”:500},{ “X”:358, “Y”:62, “W”:200, “H”: 500}]
因此,在服务器端输入隐藏字段值之前,应该对json进行编码。
尝试下面的代码,看起来你有一个数组不是我的对象。
myItems = { data : [{"X":0,"Y":0,"W":0,"H":500}, {"X":358,"Y":62,"W":200,"H":500}] };