我正在将表单输入参数作为隐藏字段发送,该值是从javascript追加的。从javascript发送值并单击表单提交后,它会自动向其添加反斜杠。请帮我避免它。
这是我的参数传递屏幕截图。
于2018-12-13 15:35:28 +0530开始为127.0.0.1启动PATCH“ / admins / resources / 1” 由Admins :: ResourcesController#update处理为HTML 参数:{“ utf8” =>“✓”,“ authenticity_token” =>“ PJDlGucD + gQ6ki9AMcxFVO7Wd4fEM6vrfyaLSjQvd + Eog3fXpiAeyayaI2j2wnucjZPZezpfBcWo4P30M6684A =”,“ \\ “,\” 8 \“,\” 5 \“,\” 6 \“,\” 7 \“,”]},“提交” =>“更新资源”,“ id” =>“ 1”} < / p>
在这里您可以看到包含反斜杠的子类别数组。我想要这样 “ subcategory_ids” => [“ 15”,“ 4”,“ 8”,“ 5”,“ 6”,“ 7”]}
请帮助我像这样
这是我的JavaScript
var dids;
var result=[];
$('#versionsDiv').on('change', function(e) {
var dids = $(this).val();
console.log(ids);
var result = dids;
console.log(dids)
var x = result
call_me(x);
function call_me(params) {
var array=[];
for (i=0; i<params.length; i++) {
array+= '"'+ params[i] + '"' +',';
console.log(array);
}
jQuery("#resource_subcategory_ids").val(array);
}
});
这是我的表单被隐藏
<%= hidden_field_tag "resource[subcategory_ids][]", [], id: "resource_subcategory_ids", :multiple=>"true" %>
答案 0 :(得分:2)
在将数组传递到regular expression
之前,使用.val()
删除不需要的反斜杠
array.forEach(function(item, i) {
item.replace(/\\"/g, '"');
});
jQuery("#resource_subcategory_ids").val(array);
在regex101上尝试regex
。这里的g
标志代表global
,表示需要替换表达式gloablly
。
详细了解.replace()
here
答案 1 :(得分:0)
尚不清楚系统的哪一部分转义了引号。在某个时候,字符串被字符串化了。例如:
const arr = ["1", "2", "3", "4", "5"];
const str = '"1", "2", "3", "4", "5"';
const obj = {'id': 1, 'text': str, 'arr': arr};
console.log(JSON.stringify(arr));
console.log(JSON.stringify(str));
console.log(JSON.stringify(obj));
/******result************************
["1","2","3","4","5"]
"\"1\", \"2\", \"3\", \"4\", \"5\""
{"id":1,"text":"\"1\", \"2\", \"3\", \"4\", \"5\"","arr":["1","2","3","4","5"]}
/************************************/
对于解决方案:尝试将您的数据(dids / result / x / params)发布为数组,不要将其字符串化(mm ..我假设您知道变量“ array”是字符串,尽管您将其创建为数组?)。