2010-07-20 85 views
3

我正在嘗試提交一個使用黑莓手機的xhr。目前,當我提出請求時,它會默默地失敗。我已經使用jQuery jQuery.getJSON(url , callback)xhr與黑莓上的phonegap

一個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() 

試過了,XUI

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

,到目前爲止,我不能讓任何人的工作。其他人是否能夠讓xhr的工作?我正在使用Eclipse的JRE4.6.1 &作爲開發環境。當我試圖提出請求時,沒有錯誤被拋出,任何建議?

+0

你知道 - 我有同樣的問題! – Olaseni 2011-03-17 09:04:30

回答

2

我爲phonegap-blackberry項目貢獻了很多,並且在我的所有測試中,出於某種原因,當您調用open()函數時,XmlHttpRequest對象始終引發一個空異常。我不確定爲什麼 - 目前形式的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. 
    }); 

希望有所幫助。

+0

是的,這絕對有幫助,謝謝。我已經看到了黑莓的問題,但不清楚背後的細節。有了這個實現,是否有任何方法來設置請求標頭? – 2010-07-22 14:36:16

+0

編號標題設置在Java的本機端,請參閱http://github.com/phonegap/phonegap-blackberry/blob/master/framework/src/com/nitobi/phonegap/api/impl/NetworkCommand.java# L200 爲了快速解決問題,您應該能夠根據自己的需要將它們設置爲Java,或者,可以隨意擴展它,以便您可以通過JavaScript進行設置。如果你這樣做,請確保你發送給我的請求github(github.com/filmaj),我一定會把它包括回主! 我真的想要廢除這個實現,並且正確編寫完整的XHR API。讓我知道你的想法,也許我們可以結合努力。 – 2010-07-22 19:40:38