JQuery和JSON.stringify的误解

时间:2015-09-24 08:57:16

标签: javascript stringify

在研究Javascript和JQuery时,我觉得在一个黑洞中有一个非常基本的代码。我需要将JS对象转换为字符串usign JSON.stringify。 该对象是通过汇集来自不同来源的数据来构建的 为简化此事,这是一个带有输入字段的裸示例,用于输入对象的数据:

<html><head><meta charset="UTF-8" /></head>
<body>
<input type="text" id="txt" value="{Name: 'John Smith'  ,  Value: 99}">`
<button id="test" type="text" value="3">TEST</button>

<script type="text/javascript" src="jquery-1.11.3.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{   
$("#test").on('click',test);
}); 

function test() {
    query = $("#txt").val();
    json = JSON.stringify(query);
    console.log("query="+json); //"{Name: 'John Smith'  ,  Value: 99}"

    query={ Name: 'John Smith', Value: 99 };
    json = JSON.stringify(query);
    console.log("query="+json); //{"Name":"John Smith","Value":99}

    return false;
};
</script>

</body>
</html>

如您所见,输入文本在内联代码时不是“字符串化”。 错误在哪里? 感谢

2 个答案:

答案 0 :(得分:2)

  

如您所见,输入文字未按字母顺序排列&#39;而内联代码是。错误在哪里?

您从输入中读取的值是已经是字符串,而不是对象。

答案 1 :(得分:1)

有几件事:

  1. 从输入字段获取的值已经是string类型;和
  2. JSON真的不喜欢用单引号来说实话。因此,根据JSONLint,您设置的值(value="{Name: 'John Smith' , Value: 99})不是有效的JSON格式。
  3. <强>解决方案

    您可以尝试从代码中删除第一个JSON.stringify使用行。并且,将输入字段值中的引号切换为:value='{"Name": "John Smith", "Value": 99}'。这应该是你的伎俩。