AJAX XML无法在带有Web-Works或Phonegap的BlackBerry上运行

我已经构建了一个应用程序,它从Web上的外部xml文件加载统计信息。

它在Web浏览器中工作正常。 当我使用PhoneGap for Android打包它时,它也可以正常工作。 适用于BlackBerry Playbook。

但是,当我将其打包为BlackBerry时,它不起作用。 我已经尝试过WebWorks命令行工具和PhoneGap。


当我使用WebWorks打包并在模拟器上运行时

Web Inspector上的控制台给出了错误

无法加载资源:服务器响应状态为500(请求资源时出错。)

当我使用Phonegap打包并在模拟器上运行时

当我使用PhoneGap而不是WebWorks打包时,我会在警报中弹出以下错误…

gap : ["Network Status", "getConnectionInfo","Network Status0",true] gap: ["Device","getDeviceInfo","Device1",true] gap_init: gap_callbackServer: gap_poll: 

App的实时版本 (未编译)

要在WebWorks或Phonegap中运行的ZIP文件


类似的悬而未决的问题 。


在YouTube模拟器中的Youtubevideo问题


我试过的事情

我已添加到配置文件中。

  

我添加了一个由phonegap建议的$ .support.cors函数。

 $( document ).bind( "mobileinit", function() { // Make your jQuery Mobile framework configuration changes here! $.mobile.allowCrossDomainPages = true; }); 

您的模拟器和WebWorks SDK是最新的吗?

我已经在2.0.1.358的现场PlayBook和2.0.0.7971的模拟器上进行了测试,没有任何问题我可以看到。

我使用2.2.0.15 WebWorks for PlayBook SDK打包,我唯一改变的是config.xml中的id,这在包装器中没有被点接受。


好的,现在我明白了问题所在。

它非常模糊,但Java智能手机SIM卡设置为与另一个名为MDS Simulator的旧模拟器工具一起使用。 对于大多数事情来说,这并不是必需的,但提供类似于设备在企业BES环境中看到的网络。 即使MDS模拟器没有运行,模拟器也认为它始终具有所谓的“MDS”连接。

使用WebWorks应用程序,如果使用没有标记的默认config.xml文件(对于大多数情况来说完全没问题),它会在TCP选项之前优先​​考虑MDS。 这是一个问题,因为sim认为它实际上没有MDS连接,并且连接尝试最终失败。

如果将以下位代码添加到config.xml中,它将降低MDS的优先级,并使其正常工作。

  BIS-B TCP_WIFI TCP_CELLULAR MDS WAP2 WAP  

最后一个关键项目 – 你需要设置模拟器才能使用模拟的wifi网络。 单击主屏幕的顶部横幅(通过无线指示灯),然后打开Wifi,并在选项和状态中单击Wi-Fi网络。 然后单击“默认WLAN网络”并完成相关步骤。

我假设这与webworks.js末尾附近的设置调用webworks.js 。 我不知道你在哪里有这个图书馆,但它似乎有点旧。

WebWorks应该自动公开您在配置文件中请求的javascript API(即: window.blackberry.* ),而不需要像http://localhost:8472/blackberry/extensions/get那样发出请求。

由于你只是在进行ajax调用,所以我放弃所有这些并专注于调试你的ajax代码。

PS:Phonegap在WebWorks上运行,因此进一步抽象不太可能解决您的问题。

它看起来像跨源资源共享问题。 您可能必须使用CORS

在服务器端启用它: http : //enable-cors.org/

在您的javascript中,使用此来请求远程内容:

 // Create the XHR object. function createCORSRequest(method, url) { var xhr = new XMLHttpRequest(); if ("withCredentials" in xhr) { // XHR for Chrome/Safari/Firefox. xhr.open(method, url, true); } else if (typeof XDomainRequest != "undefined") { // XDomainRequest for IE. xhr = new XDomainRequest(); xhr.open(method, url); } else { // CORS not supported. xhr = null; } return xhr; } // Make the actual CORS request. function makeCorsRequest() { var url = "http://www.example.com/"; var xhr = createCORSRequest('GET', url); if (!xhr) { alert('CORS not supported'); return; } // Response handlers. xhr.onload = function() { var text = xhr.responseText; // Do something with returned text data }; xhr.onerror = function() { alert('Woops, there was an error making the request.'); }; xhr.send(); } 

来自: http : //supportforums.blackberry.com/t5/Web-and-WebWorks-Development/AJAX-from-external-website-not-working/mp/1736733#M24128