jQuery传递输入值时如何去除单引号,生成正确对象数组格式
解决方法
问题核心是你从输入框拿到的是字符串类型的内容,直接放进数组里只会把整个字符串作为单个元素,而非解析成对象数组。要解决这个问题,需要把字符串转换成合法的JavaScript对象数组,步骤如下:
- 修正JSON格式:输入框里的
{id:66},{id:57}不符合标准JSON规范(JSON要求对象的键必须用双引号包裹),先把属性名id替换成带双引号的"id"。 - 包裹成数组JSON字符串:给处理后的字符串前后加上方括号,让它变成数组形式的JSON字符串。
- 解析为JS对象数组:用
JSON.parse()把合法的JSON字符串转换成真正的JavaScript数组。
修正后的代码
var testStr = $("#test").val(); // 把id:替换为"id:",生成合法JSON格式的字符串 var validJson = "[" + testStr.replace(/id:/g, '"id":') + "]"; // 解析为对象数组 var categories = JSON.parse(validJson); var newproduct = { status: status, price: 500, regular_price: 450, sale_price: 0, categories: categories };
额外说明
如果能修改输入框的value属性,直接写成标准JSON格式会更简单:
<input type="text" id="test" value='[{"id":66},{"id":57}]' />
这时只需要直接解析即可:
var categories = JSON.parse($("#test").val());
内容的提问来源于stack exchange,提问作者Gov
相关产品推荐
相关产品推荐

