在WP7模拟器中的PhoneGap应用程序中没有互联网连接

时间:2014-01-12 17:31:10

标签: windows-phone-7 cordova

我正在开发PhoneGap应用并在Windows Phone上进行测试。我正在使用jQuery,包括从网站获取数据的AJAX操作。这适用于桌面浏览器(包括IE9)和Windows Phone 8设备。

但是,当我尝试在WP7模拟器中运行我的应用程序时,AJAX请求会导致错误:“没有建立Internet会话”。我检查了是否可以加载iframe,这也不起作用。基于此,我想我的应用程序没有任何互联网连接。更令人困惑的是:window.navigator.onLine在启动时是正确的。

模拟器本身确实有互联网连接;我可以毫无问题地使用内置浏览器。

这个问题可能是什么原因;即我可以采取哪些进一步的调试步骤?

2 个答案:

答案 0 :(得分:1)

我认为这是我遇到的一些问题,尝试类似的事情:

首先我发现使用jQuery + Windows Phone + PhoneGap

在调用AJAX函数之前,您必须等待事件“deviceready”触发并添加2个代码行:

document.addEventListener('deviceready', function () {
    jQuery.support.cors = true;
    $.mobile.allowCrossDomainPages = true;
    Examplerequest(); //Your request
}, false);

要访问项目文件,您需要发出AJAX请求 函数Examplerequest() {

Var url = "www/templates/about/example.tpl";

$.ajax({
    url: url, //path to resource
    error: function (jqXHR, textStatus, errorThrown) { 
        //function on error
        alert(url + " Error: " + errorThrown);
    },
    dataType: options.externalTemplateDataType
}).done(function () { 
    //function when request is done
});

}

网址 - 一定不要相对! //在WP8中但在WP7中它必须是相对的(或者其他方式,不要记住)。

答案 1 :(得分:1)

我通过在启动时检查Microsoft.Phone.Net.NetworkInformation.DeviceNetworkInformation.IsNetworkAvailable检查了应用的网络连接,返回false。经过一番挖掘后,我终于找到了问题:

在我的 WMAppManifest 文件中,除ID_CAP_WEBBROWSERCOMPONENT以外的所有功能均已停用。暂时启用所有问题解决了我的问题(此问题的相关问题可能是 ID_CAP_NETWORKING )。

为什么它可以在Windows Phone 8上运行?

我的猜测是,当在WP8设备上运行WP7应用程序时,会自动检测所需的功能,这很奇怪,因为WP8 SDK中已删除了功能的自动检测功能。但是,我找不到任何文件来清理。