即使在转义后,ajax调用中的单引号错误

时间:2014-09-03 16:06:20

标签: javascript ajax xmlhttprequest escaping

所以我使用简单的javascript(不允许使用jQuery)而且我无法以旧方式调用Ajax,我的变量内容之一就是单引号:

为了逃脱它,我正在做:

url = url.replace(/'/g, "\\'");

我控制台记录输出,单引号被%27替换然后我正在调用它:

xhr.open("GET", url, false);

但我仍然得到500 internal server error

PS:当我从内容中删除单引号时没有错误。

2 个答案:

答案 0 :(得分:2)

构建url时,使用escape()函数对要插入的变量的值进行编码。

例如。而不是

var url = "http://host.dom.com/path/file.php?var=" + myVar

使用:

var url = "http://host.dom.com/path/file.php?var=" + escape(myVar)

答案 1 :(得分:1)

\不是您如何转义网址字符。

就个人而言,除非您获得静态或基于模板的内容(即便如此......),否则我会建议您反对GET的AJAX请求。

使用POST会更好,你可以发布任何你喜欢的字符串而不用担心编码。

但是,如果你想使用GET,或者使用urlencoded格式的POST(例如,PHP $_POST将起作用),那么你需要正确编码,这是用{完成的} {1}}