我有一些带有长字符串的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?
答案 0 :(得分:3)
我相信你应该使用encodeURIComponent
代替escape
:
var params = "str=" + encodeURIComponent(JSON.stringify($('#element').find('html').get(0).outerHTML));