使用jQuery和JSONP跨域检索html

时间:2010-11-24 09:08:41

标签: jquery ajax json jsonp

我有一个输出一行简单的html <a href="link">A LINK</a>

的表单

我可以使用附加到网址的数据直接访问该流程,例如http://site.com/form.asp?sample=100

因为这是跨域(到子域),我试图使用JSONP。我首先尝试使用数据类型json,但我仍然得到403禁止。这是我正在尝试使用JSONP,但这是各种混乱,并返回错误与此%5Bobject%20Object%5D“附加到它。我想这是一个问题我如何尝试将数据附加到url?

$j.getJSON({
        type: 'POST',
        url: 'http://site.com/form.asp',
        data: 'order=' + ordervalue,
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        success: function(response) {
            alert(response);
        }
    });

2 个答案:

答案 0 :(得分:7)

JSONP不能像这样工作,你根本就不发送JSON,而是发送HTML。

JSONP严格来说是一个GET请求(通过创建<script>标记来创建),你不能POST跨域得到结果......它只是不起作用办法。 JSONP的工作方式是它基本上将它添加到您的页面:

<script type="text/javascript" src="http://site.com/form.asp?order=something&callback=myFunc"></script>

....响应必须是有效的JavaScript,通常看起来像:

myFunc({ "key": "value"...data, etc... });

它不能用于获取HTML,它只会引发语法错误,此限制非常有意,并且部分安全块到位(same origin policy的一部分)

答案 1 :(得分:1)

您仍然可以在客户端上发布/获取跨域:

<强> flyJSONP / YQL
jankyPOST /的postMessage / contentWindow
CORS