如何在客户端和服务器端设置jsonp

时间:2012-05-18 22:11:54

标签: c# php .net json jsonp

在使用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 个答案:

答案 0 :(得分:2)

是的,你是对的。真正的JSONP需要后端支持。通常,您返回的JSON也是动态的。如果不是(每个人只共享一个数据块),对函数名称进行硬编码(选择比func更好的一个)是粗略但有效的。

如果您想要实际的JSONP,可以通过各种方式在后端执行此操作。请参阅ASP.NET MVC上关于JSONP的这个简单的PHP examplethis question