使用PhoneGap在黑莓设备上进行XHR

3

我正在尝试在黑莓上使用PhoneGap提交XHR。目前,当我发出请求时,它会无声地失败。我已经尝试使用jQuery jQuery.getJSON(url,callback)和一个XHR对象。

var xmlhttp = new XMLHttpRequest();

//callback function when XMLHttpRequest is ready
xmlhttp.onreadystatechange=function(){
    if(xmlhttp.readyState==4){
        if(xmlhttpForTGT.status==200){

            response = xmlhttpForTGT.getResponseText()
        }
        else{
            alert("Request Failed")
        }
    } 
}

xmlhttp.open("GET", url , true)
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
xmlhttp.send()

, and xui

x$('#home').xhr(url, 
    {method: 'get',
    callback: function(){ alert('made request') }});

到目前为止,我还无法让它们中的任何一个工作。有其他人能够让xhr工作吗?我正在使用JRE4.6.1,并使用eclipse作为开发环境。当我尝试发出请求时没有抛出任何错误,请问有什么建议吗?


你知道吗 - 我也有同样的问题! - Olaseni
1个回答

2
我在phonegap-blackberry项目中做出了很多贡献,但在我的所有测试中,无论何种原因,XmlHttpRequest对象在调用open()函数时总是引发一个空异常。我不确定原因 - phonegap-blackberry在当前形式下利用了RIM的专有非WebKit浏览器,所以可能与此有关。
但我已经实现了一种非常基本的本地Java方法来进行HTTP请求和检索响应。它作为“网络”PhoneGap API的一部分被桥接回您的PhoneGap应用程序中的JavaScript中。这里有一些相关信息:http://wiki.phonegap.com/Known-issues-(BlackBerry) 注意:这绝对是一种权宜之计。该实现粗糙且肯定需要改进。目前,它仅适用于返回JSON的API端点。
示例用法:
navigator.network.XHR('http://www.mysite.com/myapi',
    'This is my POST data, or I could pass in "null" for empty POST data',
    function(response) {
        // This is my success callback.
        // Do something with the JSON response object here.
    });

希望这能帮助到你。

是的,那绝对有帮助,谢谢。我已经看到了黑莓的问题,但不确定具体原因。使用该实现,是否有任何设置请求头的方法? - a.stringham
不,Java本地端已经设置了标头,请参见http://github.com/phonegap/phonegap-blackberry/blob/master/framework/src/com/nitobi/phonegap/api/impl/NetworkCommand.java#L200。为了快速修复,您应该能够在Java中根据您的需求进行设置,或者可以自由扩展此功能以便您可以通过JavaScript进行设置。如果您这样做,请确保向我发送一个pull请求(github.com/filmaj),我会确保将其包含到主代码中!实际上,我想摒弃这种实现方式,只需正确编写完整的XHR API即可。请告诉我您的想法,也许我们可以合作。 - fil maj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接