我有一个表单,可以输出一行简单的 html <a href="link">A LINK</a>
我可以直接使用附加到 URL 的数据来访问该进程,如 http://site.com/form.asp?sample=100
因为这是跨域(到子域),所以我尝试使用 JSONP 来执行此操作。我首先尝试使用数据类型 json,但仍然收到 403 禁止消息。这是我尝试使用 JSONP 进行的操作,但这一切都很困惑,并返回一个错误,并附加了 %5Bobject%20Object%5D"。我想这是我尝试将数据附加到的方式的问题网址?
$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);
}
});
最佳答案
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,它只会引发语法错误,此限制是非常有意为之的,并且部分安全 block 已到位( same origin policy 的一部分)。
关于jquery - 使用 jQuery 和 JSONP 跨域检索 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4265037/