如何将JavaScript值作为参数发送而没有反斜杠

时间:2018-12-13 10:17:12

标签: javascript arrays

我正在将表单输入参数作为隐藏字段发送,该值是从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" %>

2 个答案:

答案 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”是字符串,尽管您将其创建为数组?)。