2013-07-05 48 views
1

我一直在研究一個從Dropbox收集csv文件然後顯示它的應用程序。由於我使用phonegap,我一直在使用瀏覽器進行開發和測試,Firefox更精確。在一天結束的時候,我用android 3.2.1將它加載到我的HTC平板電腦上,並且它不工作。以下是目前使用的代碼:jQuery獲取功能在真實移動設備上無法正常工作

$.get('https://dl.dropboxusercontent.com/u/53792213/App/David.csv', function(data) { 
     alert('Success'); 
     // Do stuff 
    }) 
    .fail(function() { alert('error'); }); 

此代碼在Firefox和Android 4.2.2的Android模擬器上工作得非常好。但不在真實的物理設備上。

我根本無法解決它。沒有給出錯誤,並且從不調用失敗函數。我已添加的兩個警報都不會觸發。

這是非常令人沮喪的,因爲我無法訪問遠程調試,而且我無法在桌面上進行調試,因爲它在桌面上工作正常。

我使用jQuery 2.0.2使用jQuery移動1.3.1

我會很感激哪怕是一丁點線索是怎麼回事一起。

編輯:爲了瞭解錯誤,現在,它是INFACT扔我修改了我的發言到此錯誤:

$.get('https://dl.dropboxusercontent.com/u/53792213/App/David.csv', function(data) { 
     alert('Success'); 
     // Do stuff 
    })  
.fail(function(jqXHR, textStatus, errorThrown) { 
      alert("An AJAX error occured: " + textStatus + "\nError: " + errorThrown); 
     }); 

然而,這是錯誤返回:

An AJAX error occured: error 
Error: 

空白的錯誤信息?要麼我做錯了什麼或者JavaScript想要慢慢地殺死我。

編輯2:

做了一些實驗後,我發現了更奇怪的行爲。如果我將get()函數直接添加到我的deviceReady函數中,就像在應用程序加載並準備就緒時它會被解僱一樣,它可以完美地工作。

但是(這是發生了什麼)如果我在設備就緒函數中綁定一個點擊jquery事件,然後調用裏面的get函數,它不起作用。這裏看看這個:

var App = { 

// Application Constructor 
initialize: function() { 
    this.bindEvents(); 
}, 
bindEvents: function() { 
    document.addEventListener('deviceready', this.onDeviceReady, false); 
}, 
onDeviceReady: function() { 
    //This does work 
    $.get('http://dl.dropboxusercontent.com/u/53792213/App/DavidColson.csv', function(data) { 
     alert('Success'); 
    }) 
    .fail(function(jqXHR, textStatus, errorThrown) { 
     alert("An AJAX error occured: " + textStatus + "\nError: " + errorThrown); 
    }); 
    $("#Button").bind("click", function(event) { 
     alert("Hello"); 
     //This does not work  
     $.get('http://dl.dropboxusercontent.com/u/53792213/App/DavidColson.csv', function(data) { 
      alert('Success'); 
     }) 
     .fail(function(jqXHR, textStatus, errorThrown) { 
      alert("An AJAX error occured: " + textStatus + "\nError: " + errorThrown); 
     }); 
    }); 
}, 

};

在上述情況下,您好警報觸發,但不是成功警報,而是我得到一個空白的ajax錯誤。有任何想法嗎?

+0

FYI .error()不贊成使用。失敗() –

+0

另外,由於您使用https請求資產,如果您的頁面不是使用https(Dropbox域)從同一臺服務器提供的,那麼錯誤的潛在來源是您違反了您的同一個源策略瀏覽器。 –

+0

我該如何解決這個問題?它實際上不是瀏覽器,而是android上的web視圖。我希望有辦法解決這個問題。或者將文件傳輸到應用程序的其他方式 – Constan7ine

回答

0

爲什麼同時使用jQuery和jQuery移動?似乎你應該只能使用移動設備,並且使用這兩個庫可能是衝突導致問題的原因。

你可以嘗試添加調用jQuery.noConflict()來解決此問題:

<script type="text/javascript"> 

    // This takes out the jQuery variable '$' from the global scope 
    $.noConflict(); 

    jQuery(document).ready(function($) { 
    jQuery.get('https://dl.dropboxusercontent.com/u/53792213/App/David.csv',function(data) 
    { 
     alert('Success'); 
    }).fail(function() { alert('error'); }); 
    }); 

    //rest of your normal jQuery that uses the $. here 

</script> 

編輯:貌似jQuery mobile isn't compatible with jQuery 2尚未。嘗試引用jQuery 1.9.1,看看是否有用。

+0

我嘗試過刪除jquery和只是移動,但然後該應用程序有心臟病發作,沒有diplay的正確,得到一個錯誤,然後崩潰。除此之外,你顯然需要包括jquery核心http://stackoverflow.com/questions/4119672/do -i-need-to-include-jquery-core -sideside -jquery-mobile – Constan7ine

+0

你試過noConflict函數嗎? –

+0

是的,謝謝你的提示,但它沒有任何影響 – Constan7ine

相關問題