【问题标题】:cannot access ajax data sent on the server无法访问服务器上发送的ajax数据
【发布时间】:2014-01-20 15:40:02
【问题描述】:

我正在关注这个tutorial 来制作一个活动日历——它利用主干和全日历 jquery 插件。

Backbone 负责发送到服务器(通过 ajax)事件详细信息(开始日期、结束日期、标题)。这是发送到服务器的图像 。

它由 Chrome 开发工具的网络面板(标题选项卡)获取。我希望通过以下代码行可以访问事件的标题:

$title=$conn->real_escape_string($_POST['title']);

但我不能,我不明白为什么会这样。主干通过 POST 方法将 JSON 发送到服务器。我在这里错过了什么?

【问题讨论】:

  • 您确定它是通过 POST 发送的吗?为了取笑我,请查看 GET 表。否则 - 你知道你的代码中是否有任何重定向(.htaccess / header)吗? ($_POST 数据不会包含在这些数据中)
  • json_decode($_POST['title']);解码JSON
  • 您的数据是作为请求正文而不是作为 post 参数发送的。

标签: php jquery ajax json backbone.js


【解决方案1】:

PHP 在解析 json 数据时出现问题,因为它期望发布的数据是 Querystring 格式(key=value&key1=value1)。试试这个:

$content = file_get_contents("php://input");

【讨论】:

  • 我要使用发送ajax数据的php页面作为上述函数的参数吗?我不太明白如何使用上述函数获取事件的标题。
  • 我以为上面是一个例子-我只是复制粘贴
  • 什么会返回到 contents 变量?我将如何访问标题?我会做自己的测试,但我也在问。
  • 你会得到一个 json 字符串,然后你可以使用 json_decode 得到一个实际的 json 对象。
【解决方案2】:

您正在请求正文中发送 JSON 字典。在PHP中使用http_get_request_body获取完整的JSON字符串,然后json_decode就可以了。

【讨论】:

  • 我想就上述问题提出一个问题。当我们使用 jquery 函数 $.ajax 从发送 json 的位置时。请求正文是否也在其中?
猜你喜欢
  • 2013-09-19
  • 1970-01-01
  • 2019-03-29
  • 1970-01-01
  • 2013-05-12
  • 2019-07-01
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多