0

我想知道一个类似的代码来使用 Jquery 将外部域 URL 显示到 div 中。我知道我需要使用 Json,但我找不到一个明确的示例来完全执行以下代码的功能。

<div id="external"></div>
<script type='text/javascript'>
$(document).ready(function(){
$("#external").load("http://www.domain.com/file.php?param=option");});</script>

谢谢!

4

3 回答 3

2

您不能 .load 带有 jsonp 数据类型的 html。它不是那样工作的。

JSONP 数据类型将要求您的外部 url 返回有效的 JSONP。JSONP != HTML.

JSONP 可以包含 HTML,但是外部 url 必须以该格式返回它。如果您无法控制外部 url,那么除了让您的服务器获取 html 或使用 iframe 之外,您无能为力。

于 2012-08-03T18:41:24.180 回答
0

您的脚本使用 ajax 加载内容http://www.domain.com/file.php?param=option并将其放入带有 id 的 div#external

如果您想打开一个 URL,那么您应该使用标签上的.attr()属性并将其设置为您要打开的链接。

于 2012-08-03T18:36:50.563 回答
0

如果不使用代理页面或 jsonp,就无法进行这样的跨域 Ajax 调用。尝试使用 ajax 执行此操作违反了同源策略:http ://en.wikipedia.org/wiki/Same_origin_policy 。我认为代理页面是最简单的解决方案。基本上用 php、coldfusion 或您使用的任何 Web 语言创建一个页面,以获取您想要加载的 URL。一旦你有了它,你可以做这样的事情:

$.ajax({
    url: 'http://YOURSITE/YOURPROXYPAGE.cfm',
    type: 'GET',
    data : {param1 : 'something', param2 :'other'}
    success : function(data){
        $('#external').html(data);
    },
    error : function(x,t,e){
        console.log(x);
        console.log(t);
        console.log(e);
    },
    dataType: 'html'
});

编辑 1: 注意我在上面添加了一个数据字段。这个数据字段将是我们想要传递给我们发送 ajax 请求的页面的数据对象。在 ajax 代理页面上,我们可以拉取 ajax 数据参数作为查询参数。

此外,您可以将类型更改为 aPOST然后数据将像通过表单一样发布到我们请求的代理页面。

编辑2:

我不是 php 人,但我在 googlez 中扔了 php 代理页面并找到了一些可能的解决方案。你可以试试这个:How to proxy another page in PHP

同样,我不是一个 php 人,所以可能有其他更好的方法,但你可以尝试提取查询参数:http: //php.net/manual/en/reserved.variables.get.php

于 2012-08-03T18:48:20.290 回答