Ajax发布不适用于外部域

时间:2013-05-03 10:35:29

标签: javascript jquery ajax

也许我是第N个提出这个问题的用户,但我无法理解。

ajax调用的数据字符串似乎是空的还是什么?要么我没有得到关于成功或错误功能的任何反馈。

$.ajax({
  type:'POST',
  url:'http://www.example.com/test.php',
  data:'lid=test',
  succes: function(data){
    console.log(data);
  },
  error:function(data){
    console.log(data);
  }
});

我希望有人能帮助我吗?

亲切的问候,

6 个答案:

答案 0 :(得分:4)

没有succes功能。你的意思可能是success

答案 1 :(得分:3)

这是因为Same origin policy。你不能使用ajax来调用外部网站。如果你真的想使用,你必须使用JSONP。或者您可以使用服务器端代理。意味着,在服务器端调用外部站点并对该Web服务进行ajax调用。

for more information please refer this link和这个答案 https://stackoverflow.com/a/8698786/880434

答案 2 :(得分:2)

试试这个

 $.ajax({
        type:'POST',
        url:'http://www.example.com/test.php',
        crossDomain: true,
        data:'lid=test',
        success: function(data){
            console.log(data);
        },
        error:function(data){
            console.log(data);
        }
    });

答案 3 :(得分:1)

AJAX请求通常仅限于同一个域。以下是我在另一个Stack Overflow Answer Using Access-Control-Allow-Origin header

上找到的一些信息

或者,如果您的回复格式正确,则可以尝试JSONP request

答案 4 :(得分:1)

您被浏览器“同源政策”阻止。也就是说,您不能对除加载脚本的同一域之外的其他域执行ajax请求。但是,有一些解决方法:

  1. 使用JSONP。这可能是最兼容浏览器的解决方案
  2. 配置您的应用以支持CORS。这适用于大多数现代浏览器,但不适用于某些旧版本。
  3. 在您自己的服务器上创建代理服务。也就是说,安装一个端点,例如/externalService将服务器端的请求代理到远程端点。它也适用于所有浏览器,但涉及服务器端的更多工作。

答案 5 :(得分:0)

服务器www.example.com应该有cross-domain.xml,它将包含允许请求和获取响应的域名。因此,添加您的域名,或者只是添加doamin名称作为'*'来接受所有的doamins