从localhost调用Ajax或使用完整URL到活动服务器无法正常工作

时间:2013-11-27 09:16:58

标签: jquery ajax

我在实时服务器上有一个网页。假设'www.mydomain.com/server_script/test.php'这个。现在我正在从localhost发出一个AJAX调用,如

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结构。但它不起作用。它没有提供任何也没有显示任何错误。

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

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格式获取响应?请帮助.........

1 个答案:

答案 0 :(得分:0)

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

在服务器脚本中添加此内容。

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

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