Cordova Console.log不打印$ http响应

时间:2014-06-01 16:46:36

标签: javascript angularjs cordova

我正在使用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。< / p>

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

有什么想法吗?

更新:我尝试了所有4个变量来使用JSON.stringify,只是为了看看是否可以在沮丧的时刻出于好运而将它们留在标题上()和配置,因为他们无论如何都是对象。我仍然没有得到关于数据或状态的任何打印,这仍然困扰着我......

3 个答案:

答案 0 :(得分:2)

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));                         
    });

解决了这个问题。

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

在 Cordova 中不推荐将多个 File → Settings → Editor → Font 传递给 args。您可以改为联系日志。原因是,Cordova 在钩子下使用了 WebKit,而 WebKit 的 console.log 方法只有一个参数,并且总是打印第一个参数。您可以在 official docs for android 上找到更多详细信息。

相关问题