【问题标题】:Jquery Post method and JSON issueJquery Post方法和JSON问题
【发布时间】:2013-12-20 20:34:25
【问题描述】:

我正在使用 jquery 和 jason 将数据发送到另一个控制器,但是当我发送数据时,我在 fire bug 中检查它,这很好,它正确发送但在目标页面中,当我 var_dump $_REQUEST$_POST 返回 null。

顺便说一下,我正在使用 codeigniter。

这是我的 jquery 代码:

<script type="text/javascript">
function GetMovieLanguageCategory(Language) 
{
 $.ajax({
  type: "POST",
  contentType: "application/json",
  url: "/admin/movie/get_language_category",
  data: JSON.stringify({"Language":Language}),
  success: function(Data)
  {
    alert(Data);
  },
  failure: function(ErrorMsg) {
  alert(ErrorMsg);
  },
}); 
}
</script>

在我的控制器中:

var_dump($_REQUEST);
//var_dump(json_decode($_POST['Language']));

然后它返回:

array(0) {}

我是不是哪里错了?

【问题讨论】:

  • 我没有发现您的代码有任何问题会导致您遇到的问题。但是请注意,failure 应该是 error
  • 您还有其他类似这样的脚本可以通过 post 接受 json 字符串吗?我想知道是否有一些设置或 .htaccess 条目与您的请求混淆。
  • 不,我试过contentType: "application/json"但没有帮助!
  • 我正在使用 codeigniter,关于 jason 有什么关于 htaceess 的吗?
  • $_REQUEST 仅在您以 POST 或 GET 形式发送查询字符串时才会填充。你没有那样做。您需要阅读 raw POST 正文:$postBody = file_get_contents('php://input'); echo $postBody;

标签: javascript php jquery json codeigniter


【解决方案1】:

您正在发送 JSON 数据,但将其标记为 application/x-www-form-urlencoded 数据,并且您正尝试将其解析为 application/x-www-form-urlencoded 数据。

变化:

data: JSON.stringify({"Language":Language}),

data:{"Language":Language},

让 jQuery 为你正确编码。


如果你想自己编码(不要!):

data: "Language=" + encodeURIComponent(Language);

如果您真的想要发送 JSON:

contentType: "application/json",
data: JSON.stringify({"Language":Language}),

然后,在 PHP 中,get the body of the request 并通过 json_decode 运行它。

【讨论】:

  • 如果这是问题所在,使用contentType: "application/json" 将允许他通过$_REQUEST 访问它,不是吗?我的印象是 jquery 会在请求正文中发送它,而 php 会让你通过$_REQUEST 访问它
  • 但我想使用 jason 发送数据,我正在使用压缩,如果我不对其进行 jason 编码,它将无法工作
  • @KevinB — 不会。PHP 永远不会自动解码 JSON 请求。
  • 不,不是自动解码,我希望它能给你原始的 json,正如你所指出的那样,只是不在$_REQUEST
  • @MasOud — 我已经更新了答案,其中包含有关如何发出 JSON 请求的说明。 (注意“JSON”不是“jason”,它不是与凯莉约会的歌手兼词曲作者)。不过,我看不出这对压缩它有什么影响。
猜你喜欢
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多