2013-10-14 82 views
1

我有兩個頁面(A和B),它們是用django + jquery編寫的。和他們的網址是:如何使用ajax抓取頁面?

http://127.0.0.1:8081/temp1/ (pageA) 
http://127.0.0.1:8082/temp2/ (pageB) 

我想用ajax()來抓取頁面A的js腳本頁面B,和JS腳本是:

$("#tmp_button1").click(function(tmp_event) { 
    $.ajax({ 
      url: "http://127.0.0.1:8082/temp2/", 
      async: false, 
      headers: { 
        "Access-Control-Allow-Origin" : "*" 
      }, 
      error: function(request, error) { 
        alert(error); 
      }, 
      success: function(response) { 
        alert(response); 
      } 
    }); 
}); 

不幸的是,我無法抓取的頁面B.這是一個跨域行動嗎?如果我想通過使用jQuery來抓取頁面B,我該怎麼做?

任何幫助將不勝感激!

回答

1

端口不同,所以您的服務器(請求目標服務器)需要允許跨域請求。
只需發送這個頭:

Access-Control-Allow-Origin: * 

例如對於PHP(http://enable-cors.org/server_php.html):

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

或者使用的.htaccess(http://enable-cors.org/server_apache.html):

Header set Access-Control-Allow-Origin "*" 

更多的相關信息,以及如何:http://enable-cors.org/server.html

您還可以使用JSONP。 在此處示例(可能有所幫助):JSONP web service with python

+0

非常感謝,我在頁面B中添加了「」,如果我抓取頁面B,我會得到一個「parsererror」 , 我該怎麼辦? PS。頁面B只是一個簡單的html,沒有js,沒有css。 – Mark

+0

您需要將'Access-Control-Allow-Origin'添加到HTTP標頭而不是HTML標頭。 – fnkr

+0

我如上所述將它添加到ajax中,但它仍然不起作用。 – Mark

0

由於具有相同的源策略,因此無法這樣做。 頁和頁來自不同的域,因爲端口號不同。

檢查JSONP:http://en.wikipedia.org/wiki/JSONP這也許是解決方案。