繁体   English   中英

Angular $ http总是从PHP API返回null数据

[英]Angular $http always returning null data from PHP API

我正在尝试使用我的开发人员为我创建的登录API。

$http({
    method: 'POST',
    url: "http://example.com/api/userLogin",
    data: $.param(postLoginData),
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    responseType: 'json'
}).then(function(loginData) {
    console.log(loginData);
});

我的console.log()始终记录以下内容:

Object {data: null, status: 200, config: Object, statusText: "OK"}

然而,当我进入开发人员工具中的“ Network选项卡时,我可以看到响应实际上是以下内容:

在此输入图像描述

我不是后端开发人员,所以在响应开始时我对这个0感到有点困惑。 然后我尝试进一步研究这个并查看PHP API代码本身,并发现返回的curl_exec($loginCurl)的响应是:

HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Mon, 09 May 2016 02:10:35 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.14
Cache-Control: no-cache
Content-Length: 43
Content-Type: application/json

{"id":"16","username":"user4","status":200}

响应的body是有效的JSON,所以不太确定为什么Angular会返回null数据,即使我可以在开发人员工具中成功看到响应...


编辑:

我的API包含以下内容以执行检查和创建会话:

$jsonResults = json_decode($body, true);
if($jsonResults != NULL || $jsonResults->id != NULL) {
    //Successfully logged in
    $_SESSION['user_name'] = $jsonResults->username;
    $_SESSION['user_login_status'] = 1;
    $_SESSION['user_id'] = $jsonResults->id;

    $this->response($body, 200);
}

虽然,如果上面的代码只是替换为以下代码,它似乎完全正常:

$this->response($body, 200);

为什么会这样?

问题肯定是服务器端,但您可以使用响应转换器解决它。 例如...

$http.post('http://example.com/api/userLogin', $.param(postLoginData), {
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    transformResponse: function(data) {
        console.log('Raw data', data);
        if (angular.isString(data) && data[0] === '0') {
            data = data.substring(1);
        }
        return angular.fromJson(data);
    }
}).then(function(response) {
    console.log(response);
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM