2012-06-15 132 views
0

我正在处理一个问题已经整整一个星期了,无法在任何地方找到答案。跨域javascript ajax

这就是问题所在:

的XMLHttpRequest无法加载http://www.websiteA.com/process.php。 Access-Control-Allow-Origin不允许原产地http://clientwebsi.te

我有一个位于网站A的服务器的Javascript文件。客户端可以在那里加载JS文件的网站。

在服务器A也是位于process.php这使信息在数据库服务器A上

我现在使用此代码:

var dataText = 'page=' + top.location.host; 
$.ajax({ 
    type: "POST",     
    url: "process.php",   
    data: dataText,    
    error: function(request,error){ 
      alert(error); 
     }, 
    success: function(request) { 
     alert(request.length); 
    } 
}); 

此代码工作完全在本地主机上但是,当我使用而不是服务器A和客户端服务器(跨域)

这是网上代码:

$.ajax({ 
    type: "POST",     
    url: "http://www.serverA.com/process.php",   
    dataType: "json", 
    data: dataText,    
    error: function(request,error){ 
      alert(error); 
     }, 
    success: function(request) { 
     alert(request.length); 
    } 
}); 
+0

对不起,它只是不能按照你想要的方式完成。跨站脚本是一个很大的禁忌。你需要使用JSONP。 –

+2

请参阅http://enable-cors.org/。 – Sirko

+0

请验证答案! – Aelios

回答

0
$.ajax({ 
    type: "POST",     
    url: "http://www.serverA.com/process.php",   
    dataType: "jsonp", 
    data: data, 
    crossDomain: true,    
    error: function(request,error){ 
      alert(error); 
     }, 
    success: function(request) { 
     alert(request.length); 
    } 
+0

这个人不适合我。仍然得到“不允许访问控制允许来源”错误。 – Hopje123

+2

jsonp将解决您的问题。 – Aelios

+0

但是,jsonp是否也可以用于发布或只有请求? – Hopje123

-1

唯一的方法是让jsonp GET请求。这很容易,但你不能使用其他请求类型。

$.ajax({ 
    dataType: 'jsonp', 
    url: 'http://domain.de/jsonp.php', 
    success: function(data, textStatus, jqXHR), 
    error: function(jqXHR, textStatus, errorThrown) 
});