JQuery AJAX Post Request与绝对URL一起失败

时间:2011-08-02 00:09:54

标签: jquery ajax

我正在尝试通过AJAX测试API。我使用过JQuery:

$(document).ready(function(){

    $('#ajax').click(function(e){

        var sampleHTML = '<html></html>';

        var api_key = 'asfasasfs2';        

        $.post('http://google.com/', { api_key: api_key, html: sampleHTML },

           function(data) {

             alert("Data Loaded: " + data);

        });

    });

});

当我使用绝对URL时,我需要它,因为这是一个外部API,firebug什么都没有显示。好像没有发帖请求!

我以为我会在Chrome上测试它,它会显示状态为已取消且类型为待处理状态。这是什么意思?

请注意,我已使用Google的网址隐藏我的API网址。

2 个答案:

答案 0 :(得分:5)

请参阅jquery documentation。如果网址不在同一个域中,则无效:

  

由于浏览器安全限制,大多数“Ajax”请求都遵循相同的原始策略;请求无法成功从其他域,子域或协议中检索数据。

如果你可以调整你的api,你可以试试ajax post with script or jsonp as the return data

  

脚本和JSONP请求不受相同的原始策略限制。

答案 1 :(得分:0)

试试这个

$(document).ready(function(){

    $('#ajax').live("click", function(e){


            $.ajax({
                        type: "POST",
                        url: "http://www.google.com",
                        data:   "api_key"="asfasasfs2"
                            "&html="<html><html>", 
                        success: function(html){
                            alert(data);
                        },
                         error: function(request){
alert(request.responseText);
                          },
                            complete    : function(){
                            }
                        });
    });

});

试试这个。它应该工作。并且同源政策不适用于发布的表格。 如果火灾没有显示任何意味着没有生成点击事件