如何在客户端和服务器端设置jsonp
Posted
技术标签:
【中文标题】如何在客户端和服务器端设置jsonp【英文标题】:how to set up jsonp on the client and server side 【发布时间】:2012-05-26 11:37:19 【问题描述】:我对使用jsonp时的回调函数很困惑
这是我的 json 格式的 js 文件 http://asla.dev.1over0.com/Guide/js/testjson.js
本质上就是这个json
"x": 10, "y":15
这是我要检索的数据 这是我的网站,客户想要从跨域的 js 文件中获取数据 http://www.waveofcolor.com/faq.php 为了让我在 js 文件中检索该数据,我必须包含 js 文件 http://asla.dev.1over0.com/Guide/js/testjson.js 在脚本标签内 并声明一个函数来告诉页面如何处理这些数据 这是代码
function func(json)
alert(json.x)
<script type="text/javascript" src="http://asla.dev.1over0.com/Guide/js/testjson.js"></script>
我想这是我感到困惑的部分;到目前为止,我已经读到您几乎只需将查询字符串添加到您在脚本标记中调用的 js 文件的末尾
<script type="text/javascript" src="http://asla.dev.1over0.com/Guide/js/testjson.js"></script>
现在是
<script type="text/javascript" src="http://asla.dev.1over0.com/Guide/js/testjson.js?jsonp=func"></script>
我的问题是...... jsonp 是如何知道调用 func 函数的? 这需要在后端设置吗? 如果是这样,如何使用 PHP 或 .NET 4.0 Framework 进行设置。 如果我像这样在 js 文件中硬编码并调用 func 函数,我可以让 jsonp 工作
func( "x": 10, "y": 15);
但是在js文件中调用实际函数没有意义吧?
一如既往地感谢任何输入
【问题讨论】:
【参考方案1】:是的,你是对的。真正的 JSONP 需要后端支持。通常,您返回的 JSON 也是动态的。如果不是(每个人只共享一大块数据),硬编码一个函数名称(选择一个比func
更好的名称)是粗略但有效的。
如果你想要实际的 JSONP,有多种方法可以在后端进行。请参阅这个关于 ASP.NET MVC 上 JSONP 的琐碎 PHP example 和 this question
【讨论】:
感谢马特的澄清和他们有用的链接以上是关于如何在客户端和服务器端设置jsonp的主要内容,如果未能解决你的问题,请参考以下文章