Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $http.get错误,意外标记_Angularjs_Json_Node.js_Http_Angular Http - Fatal编程技术网

Angularjs $http.get错误,意外标记

Angularjs $http.get错误,意外标记,angularjs,json,node.js,http,angular-http,Angularjs,Json,Node.js,Http,Angular Http,我刚刚开始使用以下代码测试一个简单的API: $http.get('/api/products?limit=10').then(function (response) { console.log(response.status); }); 我得到了这个错误: SyntaxError:意外标记{ at Object.parse(本机) 在fromJson()处 在defaultHttpResponseTransform()处 在 在forEach() 在transformData()处

我刚刚开始使用以下代码测试一个简单的API:

$http.get('/api/products?limit=10').then(function (response) {
    console.log(response.status);
});
我得到了这个错误:

SyntaxError:意外标记{ at Object.parse(本机) 在fromJson()处 在defaultHttpResponseTransform()处 在 在forEach() 在transformData()处 在转换响应时() 在processQueue()处 在 在范围内。$eval()

顺便说一句,使用这个非角度代码,它可以很好地工作:

function httpGetAsync(theUrl, callback) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function() { 
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
            callback(xmlHttp.responseText);
    }
    xmlHttp.open("GET", theUrl, true); // true for asynchronous 
    xmlHttp.send(null);
}

httpGetAsync('/api/products?limit=10', function(response) {
    console.log(response);
});
API的一些代码:

res.writeHead(200, {
    'Content-Type': 'application/x-json-stream'
});

// random delay
setTimeout(function () {
    var i;
    for (i=0; i<limit; i+=1) {
        res.write(JSON.stringify(createRandomItem(i+skip, sort)) + '\n');
    }
    res.end();
}, 100 + Math.floor(Math.random() * 3000));
res.writeHead(200{
“内容类型”:“应用程序/x-json-stream”
});
//随机延迟
setTimeout(函数(){
var i;

对于(i=0;i我在客户机中解决了它,如下所示:

var WareHouseResource = $resource('/api/products?limit=10', {}, {
        query: {
            method: 'GET',
            isArray: true,
            transformResponse: function(data) {
                data = ('[' + data + ']').replace(/}/g, '},').replace(',\n]', ']');
                return angular.fromJson(data);
            }
        }
    });

我在客户端解决了它,如下所示:

var WareHouseResource = $resource('/api/products?limit=10', {}, {
        query: {
            method: 'GET',
            isArray: true,
            transformResponse: function(data) {
                data = ('[' + data + ']').replace(/}/g, '},').replace(',\n]', ']');
                return angular.fromJson(data);
            }
        }
    });

错误是说,当接收到
响应.data
并通过
fromJson()
传递时,
响应.data
存在无效的
{
,这使得
数据
不是有效的Json对象。您能记录
响应
并验证您传递的是有效的Json吗?我添加了res.write(“{”);和res.write(“}”);在for循环前后的api中,它工作了,但为什么它使用xmlHttpRequest而不是angular$http?太奇怪了……非angular可能工作了,因为您没有解析响应,所以它不关心是否返回了有效的json。
$http
处理解析,解析That抛出错误。采取什么措施在非角度控制台中返回,并将其粘贴到json验证器中…最有可能的错误是,当接收并通过json()的
响应.data
时,
响应.data
具有无效的
{
存在,使得
数据
不是有效的Json对象。您可以记录
响应
并验证您传递的是有效的Json吗?我添加了res.write({');和res.write(}'));在for循环前后的api中,它工作了,但为什么它使用xmlHttpRequest而不是angular$http?太奇怪了……非angular可能工作了,因为您没有解析响应,所以它不关心是否返回了有效的json。
$http
处理解析,解析That抛出错误。采取什么措施在非角度控制台中返回,并将其粘贴到json验证程序中…很可能失败