【问题标题】:ajax $_POST array missingajax $_POST 数组丢失
【发布时间】:2017-03-07 02:50:38
【问题描述】:

我使用 jquery $.post 函数发布到我的本地服务器。它正确发布,我看到 $_POST 数组中的值。但是当我在网站上在线上传相同的代码时,$_POST 返回空。不知何故, 'name' 变量甚至没有被发送过来?我错过了什么?

这里是 jquery/javascript 方面:

$("#box").keyup(function( event ) {
  //Simple test to see if it gets to the
  //file.
  $.post( "test-file.php", { name:"John"},       function() {
      alert( "success" );
    })
    .done(function(data) {
      //Checking the respones from the file
      alert( "second success: "+data );
    })
    .fail(function() {
      alert( "error" );
    })
    .always(function() {
      alert( "finished" );
  });



});

下面是 test-file.php 文件的作用:

<?php

//Checking to see if I get to the
//file
echo "TEST:";

//Checking to see whats inside the post
var_dump($_POST);



?>

【问题讨论】:

  • 您可能需要仔细检查 test-file.php 的路径
  • 始终在浏览器中使用 F12 打开开发控制台,然后查找选项卡网络以查看 ajay 制作时的实际情况。
  • @Cruiser 我收到了来自 test-file.php 的回复。所以这意味着它正在达到。

标签: javascript php jquery


【解决方案1】:

您需要编写您的 php 页面的 url。

如果是 www.my_url.com/test-file.php 你需要这样写:

$.post( "www.my_url.com/test-file.php", { name:"John"},       function() {
  alert( "success" );
}) .....

【讨论】:

  • 两个文件都在同一个目录中,并且 test-file.php 正在响应。消息显示,但 $_POST 数组为空。
  • @Zapp 不确定,但我不相信 var_dump 在生产环境中工作,因为这些环境通常会禁用调试技术(如果使用,取决于您的环境配置)
  • @Zapp 你也有两个成功警报?最后也没有“.php”的测试。因为使用 .php 有时浏览器会使用 GET 并且您会丢失 POST。
  • @Cyril 感谢您的回复。我只收到成功消息。没有发生任何失败的事情。
  • @niceman var_dump 返回一个数组 (0){}。在本地,它返回一个数组,其中包含名称的值。
【解决方案2】:

看起来您正在将 JSON 数据发布到 php。确保仔细检查内容类型标题以确保。

一般来说,$_POST 变量仅在您发布application/x-www-form-urlencoded 时才会填充。看看以下是否适合您:

$rest_json = file_get_contents("php://input");
$_POST = json_decode($rest_json, true);

【讨论】:

  • 感谢您的帮助。我试过这个,但它也没有工作。它返回一个空错误。我将 $_POST 更改为 $_GET 并且有效。这是 3 周前有效的代码,但突然间,没有任何更改,它就停止了工作。 $_POST 在本地仍然有效,但在网上我必须使用 $_GET。很奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 2014-10-17
  • 2019-06-26
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
相关资源
最近更新 更多