【问题标题】:$http angularjs POST don't send my data?$http angularjs POST 不发送我的数据?
【发布时间】:2014-06-06 18:40:38
【问题描述】:

我的 angularjs $http

userId = '1';

$http({
url: "php/loadTab.php",
method: "POST",
data: userId
}).success(function(data, status, headers, config) {
    console.log(data);
}).error(function(data, status, headers, config) {
});

哎呀,POST 不会将数据发送到我的 php。我确实回显了 $_POST['userId'] 它返回了未定义的索引。我也试过data:'userId':'1'

【问题讨论】:

  • 你试过data:{'userId':'1'}吗?
  • @SubirKumarSao 是的,不工作
  • $http 以 JSON 格式发送数据,这就是 PHP 的 $_POST 中没有任何内容的原因。 SO上有很多类似的问题。
  • 我知道它有一个 CodeIgniter 标签,但它无关紧要。

标签: javascript ajax angularjs


【解决方案1】:

Angular 以 JSON 格式发送数据,而不是形成编码的键/值对,因此您可以将 data 设置为对象。您几乎在第二次尝试时就可以使用它,但您需要包含花括号,它定义了一个对象:

data: { 'userId' : userId }

现在,在 PHP 端,您需要访问原始 POST 数据来解码 JSON,如下所示:

$data = json_decode(file_get_contents('php://input'));
echo $data->userId;

【讨论】:

  • 我似乎仍然没有传递数据。仍然有同样的错误。
  • 你试过了吗?因为上次我检查时,$http 默认会以 JSON 格式发送数据,所以在 PHP 的 $_POST 变量中找不到任何内容。
  • @ExpertSystem 是这样吗?刚才我使用 params:{'userId','1'} 并且它有效,但它是 $_GET;我需要 $_POST
  • 见我上面的评论。
  • @user3522457 查看更新后的答案。 ExpertSystem 关于 JSON 是正确的,因此您需要在 PHP 端以不同的方式访问它。
猜你喜欢
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
相关资源
最近更新 更多