Console.log没有打印$http响应

Cordova Console.log not printing $http response

本文关键字:http 响应 打印 log Console      更新时间:2023-09-26

我正在使用Angular的$http服务从远程数据源获取一些数据,但是将结果注销到控制台会得到空字符串。

函数如下:

$http.get('/some/url/')
    .success(function(data/*, status, headers, config*/) {
        console.log('Success! data: ', data);
    })
    .error(function(data, status, headers, config) {
        console.log('failed http req!'); 
        console.log('data: ', data); 
        console.log('status: ', status); 
        console.log('headers: ', JSON.stringify(headers()));
        console.log('config: ', JSON.stringify(config));                         
    });

我故意调用一个我知道不存在的URL,并期望得到一个404。当从浏览器运行时(使用cordova serve),我看到所有的错误数据打印到console.log。

我正在使用Cordova ~3.4我已经为Cordova安装了控制台插件。我正在查看Android设备日志,使用adb logcat设置为调试。

任何想法?

更新:我尝试了所有4个变量使用JSON。收紧,只是想看看这是否能在沮丧的时刻完全靠运气……将它们留在headers()和config中,因为它们无论如何都是对象。我仍然没有得到任何关于数据或状态的打印,这仍然让我困惑…

Cordova的console.log只接受一个参数(至少在Android上),这就是为什么我只得到部分日志记录。将代码更改为:

$http.get('/some/url/')
    .success(function(data/*, status, headers, config*/) {
        console.log('Success! data: ' + data);
    })
    .error(function(data, status, headers, config) {
        console.log('failed http req!'); 
        console.log('data: ' + data); 
        console.log('status: ' + status); 
        console.log('headers: ' + JSON.stringify(headers()));
        console.log('config: ' + JSON.stringify(config));                         
    });

解决了问题

成功和错误回调实际上将响应对象分解为4个参数,并将它们作为参数传递。

你应该使用。then语法来处理成功和错误:

 $http(...).then(success,error)

错误回调的第一个参数是JSON格式的原始响应对象。您可以从中提取一些错误信息。

成功和错误回调很方便,因此将其移到响应拦截器中可能更有意义。

Cordova不推荐多个argsconsole.log传递。您可以直接联系日志。原因是,Cordova在钩子下使用WebKit,而WebKit的onConsoleMessage方法只有一个参数,它总是打印第一个参数。您可以在android的官方文档中找到更多详细信息。