2012-06-04 43 views
2

我構建了一個應用程序,通過AJAX從外部網站讀取數據。它工作正常,但我發現在另一個question,如果我想打包它的BlackBerry 7,與Webworks或Phonegap,我可能需要使用的東西叫CORS使我的jQuery Ajax腳本使用CORS

如何將下列腳本轉換爲除了使用'CORS'之外的其他功能?

<script type="text/javascript"> 
     $("#page_all").live('pagebeforecreate', function() { 
     $.get('http://mysite.com/mobile/data/data_all.php',function(data){ 
      $('.content').empty(); 
      $(data).find('market').each(function(){ 
       var $market = $(this); 
       var html = '<div class="data">';      
       html += '<div data-role="collapsible" data-collapsed="true" data-theme="b"><h3>' + $market.attr('date') + '</h3>'; 
       html += '</div>'; 
       $('#result').append(html).trigger("create"); 
       $('#result .loading').remove(); 
      });       
     }); 
     }); 
    </script> 
+0

你的包引擎是什麼? PhoneGap的?鈦? – balexandre

+0

已經使用WebWorks和PhoneGap,每個包引擎的結果在http://stackoverflow.com/q/10799838/773263 –

回答

4

您可能正在從其他域名打開域名(ontariosheep.org),並將跨域加入投票。

CORS只是解決了這個方式,它必須是你的服務器託管data_all.php需要設置也有在響應頭屬性:

Access-Control-Allow-Origin: * 

或者,你可以使用另一種常見的方法叫做JSONP

使用JSONP方法,你叫應該是這樣的:

var url = "http://ontariosheep.org/mobile/data/data_all.php"; 
$.get(url + "?callback=?", function(data) { 
    // your method body  
}); 
+0

我已經添加了<?php頭(「Access-Control-Allow-Origin:*」 ); ?>到data_all.php –

+1

您可以使用Fiddler或其他嗅探器來查看標頭是否正確傳遞?你是否使用JSONP來嘗試? ** P.S。**你應該傳遞一個JSON字符串而不是XML數據才能成功工作,而在傳遞XML數據而不是JSON時,我遇到了編碼問題。 – balexandre

+0

我已經下載了提琴手,但不完全確定如何檢查。該代碼適用於大多數情況下,只有當我將其轉換爲BlackBerry App時無法工作。 –

-2

你可以在jQuery中專門與

$.support.cors = true; 

打開CORS此外,確保配置您的小部件的配置正確(配置。 XML)和添加

<access uri="*" /> 

或至少

<access uri="ontariosheep.com" /> 
+0

'$ .support.cors' __checks__ for support;它確實__not__ _enable_它。 –