2012-05-19 133 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