2012-05-19 271 views
2

假設我在網頁上有一個網頁,這個頁面有許多帶有ID的元素。我如何使用JavaScript獲取這些元素? 我用這個塊使用jQuery:使用javascript從html中提取元素

$.get(websiteUrl, {}, function(results){ 
    //alert(results); // will show the HTML from anotherPage.html 
    console.log($(results).find("bookId").html()); // show "bookId" div in results 
    }); 

,但我得到的錯誤:

XMLHttpRequest cannot load; Origin http://127.0.0.1:8000 is not allowed by Access-Control-Allow-Origin. 

其實,我試圖獲取Android上的根據網頁中的PhoneGap應用中的一些數據。 任何想法如何做到這一點?

+0

您使用哪個瀏覽器進行測試?你有沒有嘗試過你的網頁的真人版?由於某種原因,谷歌瀏覽器不會讓你發送AJAX請求到本地主機。 –

+0

Yeap,我在Chrome中測試。其實,我只需要將網頁中的元素放入我的Phonegap應用程序中。有沒有辦法在沒有額外的服務器端邏輯的情況下獲取它們?爲什麼在WP7 Silverlight上,我可以簡單地從HTML和Phonegap上獲取圖像或文本? – Roman

回答

1

大多數瀏覽器都遵循嚴格的同源策略。這意味着您無法向其他服務器發出Ajax請求。儘管你可以繞過它,但對每個客戶都是不實際的。

最好的辦法是調用一個服務器端腳本爲你取回它,並將結果返回給JavaScript。

+0

你的意思是我不能直接將一個網頁的內容加載到Phonegap應用程序中?其實我只需要一些圖片和文字在這個網站上。有沒有JavaScript的方式來獲取這些元素? – Roman

+0

@RomanTolmachev:JavaScript是這項工作的錯誤工具。不要用鐵鍬錘打釘子。 –

1

儘管您沒有收到錯誤或超時回調,但您可以使用jsonp進行跨域的ajax調用。 jsonp本地支持jQuery。 http://api.jquery.com/jQuery.ajax/理論上講,您可以在頁面中添加一個腳本標記,並在其中包含回調函數的名稱。然後服務器處理ajax「request」,並將回答作爲您的回調函數的單個參數返回。

+0

問題是我不管理該服務器。這不是我的網站。 – Roman

+0

然後,您必須通過您控制的網站代理AJAX呼叫。 – robrich