2010-03-23 126 views
6

我明白什么 JSON/JSONP,但我不是一个程序员,不知道如何提取简单的用法的基本知识。我已经阅读了很多关于JSONP和JSONP各种用法的例子,但是我还没有找到一个简单的例子来从其他页面检索文本(例如http://www.domain.com/external/text.aspx)。JSONP如何检索文本

有人请举一个jQuery/JSONP设置为检索文本到div的例子吗? 我会认为这是JSONP的一个非常基本的用法。

回答

13

首先,了解JSONP的工作原理非常重要,服务器必须知道它将与JSONP请求联系。换句话说,如果服务器准备不当,你不能仅仅向一些随机服务器发出请求,并期望它能够正常工作。

如果您确实知道具有旨在接受和响应JSONP请求的URL的服务器,那么返回给您的是一个包含在对函数的调用中的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."}) 
+0

非常感谢你给一个直接的例子。我将在此推荐你作为诺贝尔教育学奖的最佳人选。你也可以用蛋糕......或其他东西来对待自己。 有一件事,只是为了安全起见: 我把你的代码放在HTML分隔代码正下方的标签之间。此外,我还有一个链接,将标记链接到jquery-1.4.2.min.js。是对的吗?如果是这样,它不起作用,这意味着服务器没有设置为JSONP。对? 我可能在这里推动了极限,但是您是否也可以举例说明如何通过代理检索文本?真的很感激它。 – Nano 2010-03-23 14:35:49

+0

是的是的 - 抱歉,我没有试图提供完整的代码页面。是的,你的jQuery调用来获取JSON的东西将在脚本标签内,并且可能在某种事件的处理器内部 - 也许是对“点击”或其他东西的响应。至于代理 - 假设你的意思是一个HTTP代理 - 那么根本就不应该有什么特别的;如果您可以从浏览器访问服务器以获得正常的URL,那么您应该没有问题。关于JSON内容的HTTP请求没有什么“奇怪的”。 – Pointy 2010-03-23 17:40:16

+0

我是否必须创建JSON文件? – Nano 2010-03-23 19:58:16