JavaScript函数参数中的单引号转义
我需要在JavaScript函数参数中使用单引号来避免这种情况:
onclick="Javascript:INSERT_PRODUCT('188267','WILL AND GRACE','32311','L'ANNIVERSARIO DINOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);"
但我需要在函数调用中转义它们,因为我不知道将传递的值(我无法从数据库中转义的dbvariables)。
有没有一个函数可以让我做下面的事情?
onclick="Javascript:function(escape(param1), escape(param2), escape(param3));"
JSON.stringify(plainTextStr).replace(/&/, "&").replace(/"/g, """)
将产生一个string,你可以安全地embedded到引用的属性中,当JavaScript解释器看到时,它将具有相同的含义。
唯一需要注意的是,一些Unicode换行符(U + 2028和U + 2029)在embedded到JavaScriptstring文字之前需要转义 ,但JSON只要求转义\r
和\n
。
使用反斜杠来跳出撇号:
onclick="INSERT_PRODUCT('188267','WILL AND GRACE ','32311','L\'ANNIVERSARIO DI NOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);"
这个问题可能并不完全清楚,但是假设你只是想把这个发送到一个PHP脚本来存储在数据库中,那么你当然会理想地使用PHP的各种方法,比如stripslashes()
– 但是如果你实际上并不想太花哨,只要在任何单引号之前加上1就可以从客户端向PHP发送正确的SQL查询。 这不安全 ,但也许不是必要的。
str.replace(/'/g, "\\'"); // escaping \ with \, so used 2x
做的伎俩,像例如在这样的事情:
var body = $('#body').val().replace(/'/g, "\\'"); myCustomSQLqueryFunction("UPDATE mytable SET `content`='"+ body +"';" );
现在,MySQL将存储您的body
就像您在表单字段中看到的一样。
这个函数为我工作(它删除并重新恢复报价):猜测要发送的数据是一个input元素的值,
var Url = encodeURIComponent($('#userInput').val().replace("'","\\'"));
然后再次获取原始文本:
var originalText = decodeURIComponent(Url);
var cmpdetail = cmpdetail.replace(/'/g, "\\'");
它为我工作。
如果我正确地理解了你,我不相信你想要做什么是可能的。 您将需要在服务器端转义报价。 任何可能为你引用的函数本身都是一个函数,它需要一个有效的string,这意味着它在被传递给函数之前需要被转义。
我更喜欢用单引号来定义JavaScriptstring。 然后我逃避我的embedded双引号如下。
这是我如何做,基本上str.replace(/[\""]/g, '\\"')
。
var display = document.getElementById('output'); var str = 'class="whatever-foo__input" id="node-key"'; display.innerHTML = str.replace(/[\""]/g, '\\"'); //will return class=\"whatever-foo__input\" id=\"node-key\"
<span id="output"></span>