换行符'和"

时间:2015-06-24 11:25:04

标签: javascript jquery cordova

我正在为我的移动应用程序使用phonegap。我需要动态生成查询然后执行查询;

qry += "('" + item1 + "','" + id + "','" + item2 + "','" + item3 + "'),";

item1,item2,item3应该是字符串,以便在执行时成功执行查询。

在大多数情况下,上述位对于我的用例是好的。但是我现在遇到了意想不到的错误。

如果item1的值为1'Feet10 ' Feet代码中断且执行失败。

我怎样才能克服这个?

3 个答案:

答案 0 :(得分:1)

这是展示模板标签的ES2015解决方案:

function esc(pieces, ...subs) {
    var result = pieces[0];
    for (var i = 0; i < subs.length; ++i) {
        // uses `.escape`, use other escaping function if you want.
        // for example with `/`
        result += escape(subs[i]) + pieces[i + 1];
    }
    return result;
}

模板标签为我们提供了新的ES2015标准模板的自定义逻辑,对此非常有用。

var hello = "9'c"
console.log(esc`(${hello})`); // (9%27c)

&#13;
&#13;
function esc(pieces) {
    var result = pieces[0];
    var subs = [].slice.call(arguments, 1);
    for (var i = 0; i < subs.length; ++i) {
        result += escape(subs[i]) + pieces[i + 1];
    }
    return result;
}
var hello = "9'c";


document.body.innerHTML = esc`(${hello})`;
&#13;
&#13;
&#13;

答案 1 :(得分:0)

最后找到答案,我们需要在Sql中而不是在jquery中使用转义字符串,替换双引号而不是单引号可以解决问题。

item1.replace(/'/g, "''") ;

Escape Character in SQL Server

答案 2 :(得分:-2)

[编辑上一个回答]

试试这个,

&#13;
&#13;
<!DOCTYPE html>
<html>
	<head>
		<title></title>
		<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
		<script type="text/javascript">
			function fnEscapeQuotes(){
				var item1= "Ford's";
				var item2= "Dodges's";
				var item3= "Benz's";
				var id=100;
				var qry = "('" + item1 + "','" + id + "','" + item2 + "','" + item3 + "'),";
				alert(JSON.stringify(qry).slice(1, -1));
			}
		</script>
	</head>
	<body onload="fnEscapeQuotes();">
		
	</body>
</html>
&#13;
&#13;
&#13;