标头已经发送错误返回POST数据

时间:2016-11-28 13:55:19

标签: php angularjs

我无法找到有关此特定问题的信息,除非"输出已经发送到浏览器"这可能是真的,因为我在加载浏览器时加载了这个脚本。

然而,情况:

正在加载文件,提交Angular http POST,然后帖子应该返回一个创建的ID,然后将其存储到变量中。

角:

ORA-12801: error signaled in parallel query server P069
ORA-01481: invalid number format model".

PHP:

var res = $http.post('api/letter.php', $scope.letter);
    res.success(function(data, status, headers, config) {
                alert(data);
        $scope.letter.id = data[0].id;
    });
    res.error(function(data, status, headers, config) {
        alert( "failure message: " + JSON.stringify({data: data}));
    }); 

数据(Angular)中生成的输出确实包含ID,但未发送标头错误。因此,整个数据存储在$ scope变量中,而不仅仅是ID。

如何解决?

更新

完成错误/回复: 注意" 47"这是创建的返回ID。

47
(!)警告:无法修改标题信息 - 已在第53行的/user/api/letter.php中发送的标题(在/user/api/letter.php:22处开始输出)< / p>

更新

echo json_encode($ letter-&gt; id);返回相同的错误。

更新

发现错误。

在我的PHP API控制器中,我有一个类似的结构:

if($_SERVER['REQUEST_METHOD'] === 'POST')
{
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$letter = new Letter();
   if($letter->save())
   {
       echo $letter->id;
   }
}

但是,通过在第一个if语句之前添加if语句(所以没有if / else语句),代码决定打印两个语句!

感谢您指出错误不在原始POST语句中,而是另一个错误!

1 个答案:

答案 0 :(得分:0)

这是一个非常常见的HTTP错误。在返回响应之前检查任何echo,print语句并将其删除。理想情况下,回声或打印意味着您正在向浏览器写一些东西,而浏览器又知道它已收到对其请求的响应并阻止所有进一步的响应。

而是将$ id作为Json编码对象返回。