我正在编写一个PhoneGap应用程序,其中包含导航的HTML和Javascript,它应该从Web加载内容。
我无法直接控制内容服务器,因此无法在那里进行任何更改。
我想要在我的应用程序中获取的内容基于普通的HTML网站,所以我想要获取例如div中的文本等内容。
到目前为止我做了什么:
<script type="text/javascript">
var url = "http://example.org/"
updateGadget();
inervalID = setInterval("updateGadget();", 60 * 1000);
function updateGadget() {
$(document).ready(function () {
$.ajax(url, {}, function (response, status, xml) {
console.log(response);
});
});
}
</script>
问题在于它无法工作,没有显示任何内容。
开发时使用的是Web服务器而不是直接使用PhoneGap。当我在Google Chrome中打开网站时,会显示错误:
XMLHttpRequest cannot load http://example.org Origin http://example.org is not allowed by Access-Control-Allow-Origin.
在控制台中。
我发现应该使用这个标题:
header('Access-Control-Allow-Origin: *');
如果我把它放在我的HTML(PHP)文件的顶部,它什么也不做,而且在服务器上解析时我不能放它。问题出在哪里?如何解决?还是有更好的方法吗?如果可能的话,我想直接在PhoneGap应用程序中完成,而不需要第二个服务器后端。
Access-Control-Allow-Origin: *
。这是服务器表示“是的,我将允许浏览器跨域使用此页面”的一种方式。如果您无法控制该网站,则无法确定浏览器是否可以跨域使用它。也许您可以尝试使用像http://whateverorigin.org/这样的代理,或者[禁用浏览器对同源策略的遵循](https://dev59.com/QnA75IYBdhLWcg3wy8Ui)(但请注意,这应该仅在测试期间进行 - 在正常浏览期间禁用此功能是不安全的)。 - apsillersurl: 'http://example.org/', data: myData, type: 'GET', dataType: 'jsonp', //无论你的数据类型是什么 success: function() { alert("成功"); }, error: function(jqXHR, textStatus, errorThrown) { alert('失败!' + textStatus); }
}); - VJS