Javascript 是否可以通过AJAX加载跨域网页?

Javascript 是否可以通过AJAX加载跨域网页?,javascript,jquery,ajax,jsonp,jquery-mobile,Javascript,Jquery,Ajax,Jsonp,Jquery Mobile,我目前正在用jQM开发一个移动web应用程序 虽然我在寻找我问题的答案,但我找不到任何好的答案 我的目标是: 在另一个域中下载网页的特定元素 通过对话框显示数据 由于跨域问题,我不得不迈出第一步 有些人写过关于使用带有回调函数的JSONP,但似乎该技术只在处理JSON格式时有效 我还读到,由于安全问题,JavaScript不支持在另一个域中下载html页面 他们说得对吗 没有办法通过JavaScript实现我的目标?JSONP允许跨源共享任何JavaScript对象。字符串是一个Javascri

我目前正在用jQM开发一个移动web应用程序

虽然我在寻找我问题的答案,但我找不到任何好的答案

我的目标是:

  • 在另一个域中下载网页的特定元素
  • 通过对话框显示数据
  • 由于跨域问题,我不得不迈出第一步

    有些人写过关于使用带有回调函数的JSONP,但似乎该技术只在处理JSON格式时有效

    我还读到,由于安全问题,JavaScript不支持在另一个域中下载html页面

    他们说得对吗


    没有办法通过JavaScript实现我的目标?

    JSONP允许跨源共享任何JavaScript对象。字符串是一个Javascript对象,在您的例子中,您可以为元素提供标记以包含为字符串,并使用标准Javascript技术来处理它


    如果您愿意,还可以使用,它的支持范围不太广,但不会导致JSONP性能下降(尽管它还有其他性能缺陷,例如需要对非GET进行多次请求)。

    最好的方法是使用本地代理。换句话说:在脚本X中执行请求服务器端,并从javascript调用此脚本X。这样,您的“跨域”查询就可以从服务器上进行,并且没有限制。

    这有两种可能

    首先,仅当外部服务器设置了cors头时:。然后你就可以正常加载了。如果未设置该标题,则无法直接设置


    其次,您可以使用服务器端作为代理。只有在对静态资源执行GET请求时,这才真正有用。否则,服务器上的负载将非常高。如果您没有要使用的服务器,那么可以使用YQL,但这对于生产使用来说是粗略的

    这个问题有很多解决方法(JSONP、反向代理、“访问控制允许源站”等),在这里有一个非常广泛的线程描述,因此:

    您可以向本地服务器提交请求,让其检索外部页面,然后返回该页面以响应AJAX请求。我不确定是否有更好/更简单的方法。你听对了——除非你能控制外部域,并能将其配置为允许从第二个域使用AJAX,那么使用AJAX从外部域检索数据的唯一方法就是使用JSONP。@AnthonyGrist感谢你提出的另一个想法,“但这听起来很棘手。”谢谢你的链接。MDN有许多有用的文档。使用标题方式,它将最适合您。与
    post
    get
    json
    一起工作,但如果它们不能控制其他域,则不可能。并非所有浏览器都完全支持它,IE7不支持CORS,IE8/9需要一个插件(或您自己的修改)才能将CORS与jQuery的ajax方法一起使用。@PitaJ,你是说cors头?我没有外部服务器的权限。谢谢你的建议。通过提问,我可以学到许多我从未想过的方法:)哇,第一个链接也非常有用!谢谢