我需要在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);"
但我需要在函数调用中转义它们,因为我不知道将传递的值(db变量我无法从数据库中转义)。
是否有允许我执行以下操作的功能?
onclick="Javascript:function(escape(param1), escape(param2), escape(param3));"
答案 0 :(得分:18)
JSON.stringify(plainTextStr).replace(/&/, "&").replace(/"/g, """)
将生成一个字符串,您可以安全地嵌入一个带引号的属性中,当JavaScript解释器看到它时,它具有相同的含义。
唯一需要注意的是,在嵌入JavaScript字符串文字之前,有些Unicode个换行符(U + 2028和U + 2029)need to be escaped,但JSON只需要\r
和{{ 1}}被转义。
答案 1 :(得分:11)
用反斜杠逃避撇号:
onclick="INSERT_PRODUCT('188267','WILL AND GRACE ','32311','L\'ANNIVERSARIO DI NOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);"
答案 2 :(得分:7)
这个问题可能并不完全清楚,但假设您想要的只是将其发送到PHP脚本以存储在数据库中,您当然会理想地使用PHP的各种方法,例如stripslashes()
- 但是如果你真的不想太过花哨,只需在任何一个引号前添加一个斜杠就足以从客户端向SQL发送一个SQL查询。它不安全,但也许没必要。
str.replace(/'/g, "\\'"); // escaping \ with \, so used 2x
可以解决问题。例如,像这样:
var body = $('#body').val().replace(/'/g, "\\'");
myCustomSQLqueryFunction("UPDATE mytable SET `content`='"+ body +"';" );
MySQL现在会将您body
存储在表单字段中。
答案 3 :(得分:4)
此功能对我有用(它会再次删除并恢复报价): 猜测要发送的数据是输入元素的值,
var Url = encodeURIComponent($('#userInput').val().replace("'","\\'"));
然后再次获取原始文本:
var originalText = decodeURIComponent(Url);
答案 4 :(得分:1)
String dllName = new AssemblyName(bargs.Name).Name + ".dll";
var assem = Assembly.GetExecutingAssembly();
String resourceName = assem.GetManifestResourceNames().FirstOrDefault(rn => rn.EndsWith(dllName));
if (resourceName == null) return null; // For null assembly
using (var stream = assem.GetManifestResourceStream(resourceName))
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
};
它为我工作。
答案 5 :(得分:0)
我更喜欢使用单引号来定义JavaScript字符串。然后我按如下方式逃避嵌入式双引号。
我就是这样做的,基本上是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>
&#13;