Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.parse:JSON数据后出现意外的非空白字符_Javascript_Jquery_Json - Fatal编程技术网

Javascript JSON.parse:JSON数据后出现意外的非空白字符

Javascript JSON.parse:JSON数据后出现意外的非空白字符,javascript,jquery,json,Javascript,Jquery,Json,我希望创建一个JSON对象,它是从4个选择菜单的所选选项派生的。这些菜单可能在加载时选择了选项(由于服务器端技术),也可能没有选择任何选项!一旦使用$(document).ready()加载页面,我的脚本就会运行…但是JSON对象“JSON.parse:JSON数据后出现意外的非空白字符”” 我希望我的JSON具有以下结构 selObj = { category: selectedCategory, // we can only have 1 category, this isn’t

我希望创建一个JSON对象,它是从4个选择菜单的所选选项派生的。这些菜单可能在加载时选择了选项(由于服务器端技术),也可能没有选择任何选项!一旦使用$(document).ready()加载页面,我的脚本就会运行…但是JSON对象“JSON.parse:JSON数据后出现意外的非空白字符”

我希望我的JSON具有以下结构

selObj = {

    category: selectedCategory, // we can only have 1 category, this isn’t giving me a problem…

    catOptions:{
        optionValue:discountValue, // we can have many of these
        optionValue:discountValue,
        optionValue:discountValue
    },

    tariff:{
        tariffValue:discountValue, // we can have many of these
        tariffValue:discountValue
    },

    tarOptions:{
        tarOption:discountValue, // we can have many of these

    }

};
好的,这是我的函数,为了简化,我删除了一些项,但是我将一个原始的空对象作为参数传递到函数中,然后希望对其进行修改,因为如果/当选择菜单更改时,我希望将JSON对象传递回服务器…但是现在我们只处理页面加载…函数还显示值或在动态表中选择的内容使用名为
defaultTable()
的函数创建,暂时忽略这一点,这是我感兴趣的JSON对象的填充(并且存在问题)

var selectMenuArray=[“cat”、“catOpt”、“primary”、“tariffOpt”],//这些是选择菜单的ID。。。
selObj={};
功能设置表(selectArray,theObj){
//好的,如果我们进入页面,并且用户已经选择了tarif(因此它显示在菜单中),我们希望显示带有
//默认值/原始值。。。
var currentSelect,
catA=[],
catOptA=[],
塔拉=[],
跗骨=[],
catOptForObj,
Tarifforobj,
tariffOptForObj,
temp1={},
temp2={},
temp3={},
我
//循环浏览4个菜单,查看所选内容
对于(i=0;i 0||catOptA.length>0|tarA.length>0|tarOptA.length>0){
//显示表格。。。
$(“#dynamicTableHolder表”).css(“可见性”、“可见”).hide().fadeIn('slow');
对于(i=0;i您正在为parseJSON()提供一个类似于
'“catOptions”:“{”a:“B”,“C:“D”,“}”的字符串。
parseJSON()需要类似以下内容的内容
'{“catOptions”:{“A”:“B”,“C”:“D”}'

如果您打算手工构建JSON,则需要处理一些问题

要修复错误,您不想将
{key:value}
括在引号中,它们会被catOptForObj中的引号打断

如果OptForObj字符串可能包含双引号,则需要对其进行转义

您基本上是这样构建字符串的:

s = s + '"' + A '":"' + "B" + '",';
这将产生类似于
“A”:“B”,“C”:“D”,“

逗号只应存在于值之间。一种方法是先检查s是否为空,然后在附加值之前将其附加到s。类似于:

s = (s.length?(s+','):'') + '"' + A + '":"' + "B" + '"';

最好的方法是使用注释中建议的内置函数JSON.stringify向正在使用字符串的JSON对象添加值

catOptForObj = catOptForObj + '"' + currentSelect.options[j].value + '":"' + "% to come later" + '",'; 
相反,您可以尝试以下约定为JSON中的不同键分配值


catOptForObj[currentSelect.options[j].value]=%to come later”

永远不要使用字符串函数构建JSON。在适当的对象上使用
JSON.stringify()
。这是一个很好的建议……我会尝试一下,谢谢!还记得不要在JSON中添加实际注释,就好像它是JavaScript;JSON不允许这样做(除非您将它们作为对象的一部分包含在内)@MikeSav:转到并下载json2.js,并将其包含在您的head脚本中。用法是JSON.stringify()…进一步说明ThiefMaster所说的,而不是试图用字符串来构建它,您最好执行类似于
var myObj={};myObj[“val1”]=currentSelect.options[1]的操作
——也就是说,从一开始就创建一个合适的对象。
catOptForObj = catOptForObj + '"' + currentSelect.options[j].value + '":"' + "% to come later" + '",';