2013-11-27 30 views
1

我在活动服务器上有一个网页。假设'www.mydomain.com/server_script/test.php'这一个。现在我从本地主机一样来自本地主机的Ajax调用或使用完整的URL来使服务器不能正常工作

var data={ 
        type:'data1'       

       }; 

       jQuery.ajax({ 
          url: 'http://www.mydomain.com/server_script/test.php', //load data 
          global: false, 
          type: "POST", 
          dataType: "xml", 
          data: data, 
          async: false, 
          success: loading_complete 
       }); 

它应该提供我一个XML结构作出AJAX调用。但它不工作。它不提供任何也没有显示任何错误。

当我使用所有本地文件时,它工作正常。像

var data={ 
        type:'data1'       

       }; 

       jQuery.ajax({ 
          url: 'server_script/test.php', //load data 
          global: false, 
          type: "POST", 
          dataType: "xml", 
          data: data, 
          async: false, 
          success: loading_complete 
       }); 

但我需要从Web服务器检索数据。 这是必需的,因为我需要从一个站点获取数据并从另一个站点收集数据。

我也试着把调用页面放在活动服务器中,并将其作为第一个代码示例调用,但它也不起作用。它只适用于第二个代码示例。

我是Jquery Ajax和php的新手。我错过了什么吗?如何调用托管在不同域上的页面并获取XML中的响应?请帮助.........

+0

为跨域请求添加此标头在您的php头('访问控制,允许来源:*'); – Satya

+0

注意:无论全局值如何,全局事件都不会被跨域脚本或JSONP请求触发。 –

+0

@Satya没有工作 – AtanuCSE

回答

0

您必须通过设置正确的标头,让您的服务器脚本允许从任何或特定来源请求服务器脚本。

将此内容添加到您的服务器脚本中。

header('Access-Control-Allow-Origin: *'); 

由于安全原因您的浏览器设置了跨域请求限制,因此出现此错误。一个临时的解决方案是启动你的浏览器没有安全标志,但这是一种低级解决方案,编程解决方案是在你的PHP脚本中设置适当的标题。在header('Access-Control-Allow-Origin: *');中,如果您的客户端地址是固定的,您可以指定一个客户端地址,或者使用*来允许从任何地方进行访问。在*的情况下,您可能希望从客户端向服务器发送附加参数,以便服务器可以将响应限制在某个级别。可能有其他解决方案和替代方案,您可以避免在没有修复客户端的情况下使用'*'。如果有人得到一个,请分享任何替代解决方案。

+0

试过了。还是行不通。没有回应,也没有错误 – AtanuCSE

+0

用--disable-web-security启动chrome,然后检查你的代码 –

+0

同时关注你在chrome开发工具 - > network选项卡上的请求,看看发生了什么。 –

相关问题