2

我有一些 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);

它可以很好地传递所需的外层HTML,但是 escape() 无法转义某些字符,例如 php 函数所必需的“+”。是否有其他函数可用于转义这些字符,或者我是否需要在将其发送到 php 函数之前手动处理 outerHTML?

4

1 回答 1

3

我相信你应该使用encodeURIComponent而不是escape

var params = "str=" + encodeURIComponent(JSON.stringify($('#element').find('html').get(0).outerHTML));
于 2012-09-28T19:11:37.823 回答