维护未被javascript escape()函数转义的字符

时间:2012-09-28 19:08:34

标签: php javascript jquery escaping

我有一些带有长字符串的javascript / jquery代码,并通过AJAX请求将其发送到php CodeIgniter函数,该函数进一步处理它。电话看起来像这样:

var params = "str="+escape(JSON.stringify($('#element').find('html').get(0).outerHTML));
xmlhttp1 = new XMLHttpRequest();
xmlhttp1.open("POST", "http://www.url.com/controller/function", false);
xmlhttp1.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp1.setRequestHeader("Content-length", params.length);
xmlhttp1.setRequestHeader("Connection", "close");
xmlhttp1.send(params);

它传递了所需的outerHTML就好了,但是escape()无法转义某些字符,比如'+',它们是php函数所必需的。是否有其他函数可以转义这些字符,还是我需要在将它发送到php函数之前手动处理outerHTML?

1 个答案:

答案 0 :(得分:3)

我相信你应该使用encodeURIComponent代替escape

var params = "str=" + encodeURIComponent(JSON.stringify($('#element').find('html').get(0).outerHTML));