【问题标题】:JQuery Mobile POST data empty in $_POST$_POST 中的 JQuery Mobile POST 数据为空
【发布时间】:2012-10-11 13:23:27
【问题描述】:

我在使用 JQuery Mobile(对我来说是新手)和 AJAX 调用时遇到了问题。我正在使用以下代码:

$.ajax({
            type: "POST",
            url: "http://**correct url**/post/todoitem",
            beforeSend: addHeaders,
            dataType: "json",
            contentType: "application/json",
            data: { "todoitem":"test" }, // this is just as a test
            success: function(result) {
                alert("Success: " + JSON.stringify(result));
            },
            error: function() {
                alert("Error: " + JSON.stringify(arguments));
            }
        });

执行此操作时,它会调用一个 PHP 脚本,我需要来自 todoitem 的数据,所以在这种情况下,字符串“text”(最后,要发送多个变量,但现在我只是使用一个参数为简单起见)。

我的 PHP 代码如下所示(也仅用于测试目的):

echo json_encode($_POST));

结果是:什么都没有,null。 $_POST 似乎是空的。我已经搜索并尝试了很多东西,但大多数答案(甚至在 stackoverflow 上)都是关于表单的,人们说我需要序列化表单的内容。但是,我根本没有使用表单。

我也试过

data: JSON.stringify({ "todoitem" : "test" })

正如一些人所建议的,但这也不起作用。 我确实知道数据正在传输,因为我尝试了这个小小的 PHP hack:

echo file_get_contents('php://input');

这正好显示了数据:todoitem = test.那么这一切都错在哪里呢?我正在为此工作几天!提前谢谢

【问题讨论】:

  • 你在什么设备上测试这个?什么 jQuery 和 jQuery Mobile 版本?
  • 为什么不使用 $.post 并在执行前调用 addHeaders 呢?我想也许它正在做一个 get 代替
  • 它不做 GET,PHP 只是不解码 application/json :)

标签: php post jquery-mobile is-empty


【解决方案1】:

问题在于您的这部分代码:

contentType: "application/json",`

删除该行应该使发送的Content-Type 标头默认为application/x-www-form-urlencoded,PHP 会将请求解码为$_POST

【讨论】:

  • 这似乎有效。很奇怪,因为我在搜索过程中在另一个网站上看到它时实际上添加了该行。所以起初,我什至没有那条线(我曾经也有'application/x-www-form-urlencoded')。可能做错了什么比我猜的要多。任何人都感谢您的帮助!
猜你喜欢
  • 2013-04-27
  • 2010-12-11
  • 2013-06-21
  • 2015-01-08
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
相关资源
最近更新 更多