JSONP如何获取文本

6
我了解JSON/JSONP的作用,但我不是程序员,不知道如何提取简单使用的基础知识。我已经阅读了很多关于JSONP的文章,并看了许多有关JSONP各种用法的示例,但我还没有找到一个从另一个页面(例如 http://www.domain.com/external/text.aspx)检索文本的简单示例。
请问是否可以给出一个jQuery/JSONP设置的示例,将文本检索到一个div中? 我认为这是JSONP非常基本的用法。
1个回答

13

首先,需要明白的是为了让JSONP正常工作,服务器必须知道它将会被一个JSONP请求所访问。换句话说,如果服务器未经适当准备,你不能只向任意服务器发起请求并期望它能够正常工作。

如果你已经知道了一个URL被设计用于接受和响应JSONP请求的服务器,那么它将返回给你一个被包裹在一个函数调用中的JSON表达式。你的网页将包含该函数,因此,当来自服务器的结果返回时,浏览器将解释JSON表达式并调用该函数。

因此,如果你想创建一个返回美好文本块的服务,你将通过以下方式调用该服务:

$.getJSON("http://www.domain.com/external/text.aspx?callback=", function(data) {
  $('#targetDiv').text(data.text);
});
jQuery代码将准备好一切,以便告诉服务器(通过HTTP请求中的名为“jsonp”的参数)要调用哪个函数的名称(而jQuery本身将为您构建该函数)。 服务器应该响应类似于以下内容:
jqueryFunctionName({text: "This is a nice block of text."})

非常感谢您提供了一个直接的例子。我在此推荐您作为教育学诺贝尔奖的最佳候选人。您也可以自己享用杯形蛋糕...或其他什么。为了保险起见,有一件事: 我已经将您的代码放在HTML div代码下面的<script>标签之间。同时,在<head>标签中有一个链接到jquery-1.4.2.min.js。这样做是正确的吗?如果是,但它没有起作用,那就意味着服务器没有设置JSONP。对吗?我可能在这里有些过分了,但您能否给出一个通过代理检索文本的示例?非常感激。 - Nano
是的,抱歉,我并不想提供一整页的完整代码。是的,您用 jQuery 调用获取 JSON 数据的方法应该在 script 标签中,并且可能在某种事件处理程序中 - 也许是对“点击”或其他某些响应的响应。关于代理 - 假设您指的是 HTTP 代理 - 那么就根本没有什么特殊的事情;如果您可以从浏览器访问服务器的普通 URL,则不应该有任何问题。JSON 内容的 HTTP 请求并没有什么“奇怪”的地方。 - Pointy
我需要创建JSON文件吗? - Nano
好的,“某件事情”必须由某个东西创建,并且那个东西必须在您联系的服务器上。就像我所说的,这不是您可以随意对任何服务器执行的操作:它必须已经支持JSONP交互。 - Pointy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接