2012-05-30 49 views
1

我試圖通過本地Ajax請求在PhoneGap應用中加載一些內容。它似乎在iPhone上工作正常,但Android不會找到該文件。Android上的本地Ajax請求/ Sencha/PhoneGap

它是這樣的:

Ext.Ajax.request({ 
     url: 'file:///android_asset/webapp/content/file.html', 
     success: function(response, opts) { 
      console.log('response ' + response.responseText); 
     } 
     failure: function(response, opts) { 
      console.log('response ' + response.responseText); 
     } 
    }); 

我已經調整了清單並沒有設置Internet權限,仍然沒有成功。

你有什麼想法嗎?

+0

Web瀏覽器不允許訪問本地文件以確保更好的安全性。 [http://en.wikipedia.org/wiki/File_URI_scheme#Mozilla] –

回答

0

我在這種情況下做的第一件事就是擺脫對Sencha或jQuery等第三方庫的依賴,並直接使用XHR。有一個問題,即當文件協議的請求實際爲200時,它有時會返回0的狀態。大多數庫都有這種固定的,但你永遠不知道。試試這個XHR代碼,它應該在Android上很好用:

var request = new XMLHttpRequest(); 
    request.open("GET", "file:///android_asset/webapp/content/file.html", true); 
    request.onreadystatechange = function(){ 
     if (request.readyState == 4) { 
      if (request.status == 200 || request.status == 0) { 
       console.log("response " + request.responseText); 
      } 
     } 
    } 
    request.send(); 
0

您正在使用哪個版本的Sencha Touch?西蒙指出,許多庫遇到的0響應代碼時,報告故障,煎茶觸摸固定以此爲2.0.0

http://www.sencha.com/forum/showthread.php?173577-Ext.data.Connection-fails-when-evaluating-a-file-protocol-s-status

其次的,請嘗試刪除該文件:/// android_asset/Web應用程序/作爲ULR的一部分,與內容目錄相關的網址應該可以正常工作,並且可以減輕您爲達到該路徑所做的任何操作系統檢測切換。

Ext.Ajax.request({ 
    url: 'content/file.html', 
    success: function(response, opts) { 
     console.log('response ' + response.responseText); 
    } 
    failure: function(response, opts) { 
     console.log('response ' + response.responseText); 
    } 
});