我的控制台日志中出现此错误:
XMLHttpRequest无法加载http://example.com/jsonconnect1.php。没有 '访问控制允许来源'标题出现在请求的上 资源。起源' null'因此不允许访问。
我知道有很多问题已经被问到,但他们都使用了#ajax'调用我的代码使用getjson
$(document).ready(function(){
var url="http://example.com/jsonconnect1.php";
$.getJSON(url,function(json){
// loop through the members here
$.each(json.members,function(i,dat){
$("#msg").append(
'<div class="members">'+
'<h1>'+dat.id+'</h1>'+
'<p>Firstname : <em>'+dat.username+'</em>'+
'<p>SurName : <em>'+dat.mobileno+'</em></p>'+
'<p>Title : <strong>'+dat.total+'</strong></p>'+
'<hr>'+
'</div>'
);
有什么想法?感谢。
答案 0 :(得分:1)
你可以看看这里: 这个问题已被社区广泛讨论。 理解这个概念更好,然后它很容易。
How does Access-Control-Allow-Origin header work?
Origin is not allowed by Access-Control-Allow-Origin
“No 'Access-Control-Allow-Origin' header is present on the requested resource”
What are the security risks of setting Access-Control-Allow-Origin?
答案 1 :(得分:0)
您显然正在尝试跨域Ajax请求。这意味着您尝试联系与原始网页所在的域/端口不同的域/端口上的服务器。这称为交叉原始请求,默认情况下不允许。您可以阅读有关浏览器的同一来源安全政策here。
为了允许直接发出跨域请求,您提出请求的服务器必须明确允许它。
Access-Control-Allow-Origin
标头是允许此类访问的一种方式,但它显然没有应用该标头,因此浏览器拒绝了该请求。您可以在此处了解CORS(跨源资源共享)如何工作enter link description here。
制作跨源请求的其他方法是使用JSONP(还需要目标服务器的协作以支持JSONP请求)或通过代理(允许您联系的另一个服务器,可以向所需的服务器发出请求)你并将结果归还给你。代理在您有权访问的服务器上需要您自己的服务器代码,但不需要目标服务器的协作。
Per the doc on this page,Markit On Demand似乎支持JSONP,因此您可以将该表单用于跨源请求。如果为dataType: "jsonp"
设置适当的$.ajax()
选项,jQuery的ajax支持该格式。