【问题标题】:ajax request does not send POST vars (or PHP script does not receive them)ajax 请求不发送 POST 变量(或 PHP 脚本不接收它们)
【发布时间】:2011-06-13 23:16:23
【问题描述】:

我有一个 AJAX 请求,它发送以下信息(通过 POST)。一切都很好,除了在请求的 PHP 文件中 $_POST 超全局为空。

我正在提供 Firebug 的标题和帖子标签:

标题标签:

响应标头查看源代码
日期 2011 年 1 月 23 日星期日 08:41:03 GMT
服务器阿帕奇
X-Powered-By PHP/5.2.13
到期时间 1981 年 11 月 19 日星期四 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
杂注无缓存
内容长度 127
连接关闭
内容类型 text/html


请求标头查看源
主持人 xx
用户代理 Mozilla/5.0(Macintosh;U;Intel Mac OS X 10.6;en-US;rv:1.9.2.13)Gecko/20101203 Firefox/3.6.13
接受 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
接受编码 gzip,deflate
接受字符集 ISO-8859-1,utf-8;q=0.7,*;q=0.7
保活 115
连接保持活动
推荐人 http://xx/florin2/cautare
内容长度 2325
内容类型文本/纯文本;字符集=UTF-8
Cookie PHPSESSID=8367d170xx

帖子标签:

零件 multipart/form-data
标题Public PDG Archivarius
nr_versiune
nume_developer 阿斯顿软件
网站开发者
site_produs
pret_vechi
pret_actual 9.95
link_pret /nph-softsell.cgi?item=2304-3&affiliate=441937
尺寸 20.00
zilePromo 0
startPromo 0000-00-00
添加日期 2009-02-01
数据更新 0000-00-00
评分 0
NR_下载 191
id_pad 0
精选 0
许可证共享软件
操作系统视窗
id_subcat_f 102
subtitlu 一个高级压缩工具,它允许恢复 .zip 密码并进行防病毒扫描...
描述 一个高级压缩实用程序,允许恢复 .zip 密码并进行防病毒扫描。
特征
审查
亲
反
要求
局限性








资源
内容类型:multipart/form-data;边界=gRNHZ7wzOS
--gRNHZ7wzOS
内容处置:表单数据;名称="titluPublic"

PDG 档案
--gRNHZ7wzOS
内容处置:表单数据;名称="nr_versiune"


--gRNHZ7wzOS
内容处置:表单数据;名称="nume_developer"

阿斯顿软件
--gRNHZ7wzOS
内容处置:表单数据;名称="site_developer"
--gRNHZ7wzOS
内容处置:表单数据;名称="site_produs"


--gRNHZ7wzOS
内容处置:表单数据;名称="pret_vechi"


--gRNHZ7wzOS 内容配置:表单数据;名称="pret_actual"

9.95
--gRNHZ7wzOS
内容处置:表单数据;名称=“链接_pret”

/nph-softsell.cgi?item=2304-3&affiliate=441937
--gRNHZ7wzOS
内容处置:表单数据;名称=“大小”

20.00
--gRNHZ7wzOS
内容处置:表单数据;名称="zilePromo"

0
--gRNHZ7wzOS
内容处置:表单数据;名称=“开始促销”

0000-00-00
--gRNHZ7wzOS
内容处置:表单数据;名称="添加日期"

2009-02-01
--gRNHZ7wzOS
内容处置:表单数据;名称="数据更新"

0000-00-00
--gRNHZ7wzOS
内容处置:表单数据;名称="评级"

0
--gRNHZ7wzOS
内容处置:表单数据;名称="nr_download"

191
--gRNHZ7wzOS
内容处置:表单数据;名称="id_pad"

0
--gRNHZ7wzOS
内容处置:表单数据;名称=“特色”

0
--gRNHZ7wzOS
内容处置:表单数据;名称=“许可证”

共享软件
--gRNHZ7wzOS
内容处置:表单数据;名称="操作系统"

视窗
--gRNHZ7wzOS 内容配置:表单数据;名称="id_subcat_f"

102
--gRNHZ7wzOS
内容处置:表单数据;名称="字幕"

一个高级压缩实用程序,它允许恢复 .zip 密码并进行防病毒扫描...
--gRNHZ7wzOS
内容处置:表单数据;名称="描述"

一个高级压缩实用程序,允许恢复 .zip 密码并进行防病毒扫描。
--gRNHZ7wzOS
内容处置:表单数据;名称="功能"


--gRNHZ7wzOS
内容处置:表单数据;名称="评论"


--gRNHZ7wzOS
内容处置:表单数据;名称="专业"


--gRNHZ7wzOS
内容处置:表单数据;名称="反"


--gRNHZ7wzOS
内容处置:表单数据;名称="要求"


--gRNHZ7wzOS
内容处置:表单数据;名称="限制"


--gRNHZ7wzOS--

抱歉发了很长的帖子,谢谢!

更新

正如 polarblau 建议的那样,我尝试了 `echo file_get_contents('php://input');'输出如下:

内容类型:multipart/form-data;边界=zMgU0RnQIk

--zMgU0RnQIk
内容处置:表单数据;名称="titluPublic"

Feldenkrais 骨盆时钟变化
--zMgU0RnQIk
内容处置:表单数据;名称="nr_versiune"


--zMgU0RnQIk
内容处置:表单数据;名称="nume_developer"

综合学习
--zMgU0RnQIk
内容处置:表单数据;名称="site_developer"


--zMgU0RnQIk
内容处置:表单数据;名称="site_produs"


--zMgU0RnQIk
内容处置:表单数据;名称="pret_vechi"


--zMgU0RnQIk
内容处置:表单数据;名称="pret_actual"

7
--zMgU0RnQIk
内容处置:表单数据;名称=“链接_pret”

/nph-softsell.cgi?item=14294-5&affiliate=441937
--zMgU0RnQIk
内容处置:表单数据;名称=“大小”

20.00
--zMgU0RnQIk
内容处置:表单数据;名称="zilePromo"

0
--zMgU0RnQIk
内容处置:表单数据;名称=“开始促销”

0000-00-00
--zMgU0RnQIk
内容处置:表单数据;名称="添加日期"

2009-02-01
--zMgU0RnQIk
内容处置:表单数据;名称="数据更新"

0000-00-00
--zMgU0RnQIk
内容处置:表单数据;名称="评级"

0
--zMgU0RnQIk
内容处置:表单数据;名称="nr_download"

261
--zMgU0RnQIk
内容处置:表单数据;名称="id_pad"

0
--zMgU0RnQIk
内容处置:表单数据;名称=“特色”

0
--zMgU0RnQIk
内容处置:表单数据;名称=“许可证”

共享软件
--zMgU0RnQIk
内容处置:表单数据;名称="操作系统"

视窗
--zMgU0RnQIk
内容处置:表单数据;名称="id_subcat_f"

7
--zMgU0RnQIk
内容处置:表单数据;名称="字幕"

Feldenkrais 课程 骨盆时钟变化 这门 Feldenkrais 课程的主题是...
--zMgU0RnQIk
内容处置:表单数据;名称="描述"

Feldenkrais 课程骨盆时钟变化 这门 Feldenkrais 课程将骨盆时钟的主题带入了其他方向。它的价值在于它对你的神经系统的要求略有不同。这就是您可以通过费登奎斯课程的变体进行开发的方式。这样做非常有用。它有助于培养费登奎斯课程和费登奎斯练习者所闻名的微妙而复杂的意识品质。让您的骨盆更加灵活。
--zMgU0RnQIk
内容处置:表单数据;名称="功能"


--zMgU0RnQIk
内容处置:表单数据;名称="评论"


--zMgU0RnQIk
内容处置:表单数据;名称="专业"


--zMgU0RnQIk
内容处置:表单数据;名称="反"


--zMgU0RnQIk
内容处置:表单数据;名称="要求"


--zMgU0RnQIk
内容处置:表单数据;名称="限制"


--zMgU0RnQIk--

这很好,但我仍然不知道为什么我的$_POST 没有填充。我什至尝试强制$_SERVER['CONTENT_TYPE'] = 'multipart/form-data';,但没有结果。

【问题讨论】:

  • var_dump($_POST); exit; --- 把它放在你脚本的第一行
  • 您请求的页面中是否有任何重定向?并非所有类型的重定向都会重复发布数据。
  • @GolezTrol:没有一种 redirect 会复制帖子数据。
  • 根本没有重定向
  • 也可以发布 HTML 代码?

标签: php ajax forms http-post


【解决方案1】:

This guy here at bradino.com 似乎为这种情况提出了一种很好的调试方法:

$data = file_get_contents('php://input');

这应该会为您提供“原始传入消息”。如果这表明您实际上有传入数据,他建议强制使用内容类型,以防在发出请求时被搞砸了:

if(empty($_SERVER['CONTENT_TYPE'])){
     $type = "application/x-www-form-urlencoded";
     $_SERVER['CONTENT_TYPE'] = $type;
}

【讨论】:

  • 哇,谢谢一百万!这实际上给了我发送的数据。但尝试设置$_SERVER 变量仍然不起作用。我将使用来自file_get_contents('php://input'); 的信息更新问题
  • 你看过这篇文章了吗? cmets 中似乎还有一些提示/想法。
猜你喜欢
  • 2012-08-02
  • 2014-01-30
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 2021-01-14
  • 2011-05-22
  • 1970-01-01
  • 2017-06-23
相关资源
最近更新 更多