我正在构建一个Web应用程序,它可以让用户更容易为给定的实用程序生成正确的XML。
作为一个简单的测试,我创建了一个包含生成的XML的textarea。然后我创建了一个带有jQuery处理程序的按钮(<input type="button">
),该处理程序将文本区域的内容发送到我的PHP应用程序,该应用程序将按摩数据并将各种项目放入。我使用将数据发送到PHP的代码如下(假设'this'是一个复杂的对象,而doImport()是该对象中的一个函数......这是正常工作的):
doImport : function () {
var $ = this.jQuery,
js = this,
xml = $('textarea#xmlInput').val();
$.post(this.selfRef, {
import : xml
}, function (json) {
if (json.status) {
$('table#tableArea tbody').html(json.tableInfo);
} else {
alert("Error occurred:\n" + json.message);
}
}, 'json');
},
我可以使用Firebug检查数据,并且我正确地从文本区域获取XML数据。我希望我的PHP应用程序能够生成JSON结果。
接下来,在PHP方面,当我使用$_REQUEST['import']
检索POST信息时,我得到以下内容:
<?xml version=\"1.0\"?> [...]
换句话说,双引号被反斜杠转义。
我尝试逐字符检查字符串,我确实看到$_REQUEST['import']
返回的字符串中的反斜杠。
我知道我可能会忽略一些非常简单的事情,但对于我的生活,我无法弄清楚我做错了什么。
此致
lar3ry
答案 0 :(得分:4)
您的PHP安装已启用“magic_quotes”。这是很久以前推出的“安全”功能。 (真的只会导致这样的问题恕我直言)。
我相信你必须在php.ini中关闭它(如果你使用linux,通常可以在/ etc中找到)。变化
magic_quotes_gpc = On
到
magic_quotes_gpc = Off
如果不起作用,您可以在输入中使用stripslashes()
功能。
$_POST['import'] = stripslashes($_POST['import']);
希望有所帮助!