2009-10-23 105 views
3

我需要請求網頁客戶端並將其作爲字符串傳遞給服務器。我試過jQuery:類似javascript瀏覽器的GET請求

$.get(
    "http://example.ru/", 
    {name:"Joe", age:"42"}, 
    function(data){ 
     $.get(
      "script.php", 
      {data:data, query:query}, 
     ) 
    }); 
}); 

但沒有成功。我懷疑是因爲jQuery添加了自定義頭文件而失敗。

你能給我提供一些技巧來重寫請求頭文件或任何js庫,這些請求就像瀏覽器一樣嗎?

+0

您應該使用Firebug(http://getfirebug.com/)來查看表面下面發生了什麼。 – 2009-10-23 13:58:23

+0

當然我使用螢火蟲。我注意到唯一不同的是以下頭文件: Origin \t http:// localhost 訪問控制請求頭\t x請求與 – dir01 2009-10-23 14:17:51

+0

只是注意到,請求方法是OPTIONS而不是GET。我勒個去。任何人都可以解釋我? – dir01 2009-10-23 14:21:50

回答

3

你被Same Origin Policy抓出來:

同源策略阻止 文檔或腳本從一個起源 加載從獲得或從另一個 原點設置文檔的 性能。

你可以做的是在你的域中使用一個簡單的代理來獲取你感興趣的頁面(當然有權限),從而允許你通過ajax請求在你的頁面上顯示它。我的意思是類似於以下內容:

$.get("yourdomain/proxy.php?name=Joe&age=42" 
    function(data){ 
     $.get(
      "script.php", 
      {data:data, query:query}, 
     ) 
    }); 
}); 
+0

o_O所以沒有辦法通過在主機B上執行的JavaScript從主機A獲取數據?但在這種情況下,google web search api如何工作? – dir01 2009-10-23 14:15:31

+0

您可以從來自不同域的