PHP对应的jQuery processData

时间:2014-09-17 10:45:34

标签: javascript php jquery ajax

通过jQuery ajax post请求传输PHP代码时遇到了字符串引用问题。当jQuery的ajax方法的processData未设置或设置为true时,根据jQuery手册传递的代码:

  

将被处理并转换为适合的查询字符串   默认内容类型" application / x-www-form-urlencoded"

这让我认为我应该urldecode() PHP中的输入,但这不正确,因为那是关于将百分比编码的字符串转换回实际字符​​,而不是引用。

我尝试使用stripslashes()stripcslashes()两者似乎都有效,但由于它们不相同,这让我有点不确定哪种方法是正确的,可靠地给我带来100%按位相同的输入?

作为一种解决方法,我在提交之前考虑使用Javascript编写代码,但这会增加可能不必要的开销。

那么:jQuery' s processData的正确PHP副本是什么?

修改 为了澄清发生了什么,这里有一个例子:

代码输入:

/** Textfield has the following contents:
 *  <?php
 *  echo 'Hello world!';
 */
var code = $("textarea").val();
$.ajax({
    url: "gateway.php",
    type: "POST",
    data: {code : code}
});

在PHP后端:

var_dump($_POST['code']);
/** Output is:
 *  <?php
 *  echo \'Hello world\';
 */

1 个答案:

答案 0 :(得分:1)

看起来你有magic_quotes_gpc,它驱动php自动逃避GET,POST和COOKIES(尤其是引号)的某些字符。转义是在Javascript中完成的。

看一下php-manual: http://php.net/manual/de/security.magicquotes.disabling.php

您可以在服务器基础上禁用该功能,也可以在脚本中手动禁用该功能,但这有点难看。如果您无权访问ini文件,最好的解决方案是更改您的 php.ini 或在您的托管服务提供商面板中搜索此类选项。

希望我能提供帮助