2012-06-04 22 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_它。 –