日期:2014-05-16  浏览次数:20461 次

jsonp js代码看不懂
服务端返回的是
flightHandler({
    "code": "CA1998",
    "price": 1780,
    "tickets": 5
});
我能看懂
{
    "code": "CA1998",
    "price": 1780,
    "tickets": 5
}是json,但在外面加了
flightHandler();表示什么意思,客户端为什么这样就能调用得到数据
var flightHandler = function(data){
        alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。');
    };
jsonp

------解决方案--------------------
不知道您有没有了解过“跨域”相关的话题。jsonp是为了解决跨域来的。
所以要想明白为什么要这么写,你得先了解“跨域”,为什么要跨域,否则你会问,服务器直接给你返回
{
    "code": "CA1998",
    "price": 1780,
    "tickets": 5
}
,然后你var object = eval(serverString)不就结了?

jsonp的做法就是在页面动态插入一个script标签,去加载服务器端的数据,因为script是天生可以跨域的。如果服务器直接给你返回
{
    "code": "CA1998",
    "price": 1780,
    "tickets": 5
},你是没有办法也没有机会处理它的。所以你传一个回调函数名flightHandler到服务器(这个函数在flightHandler你的页面上必须是已经定义了的),服务器把回调函数名连同数据拼接好之后给你返回来。当你的页面加载到该数据之火就执行了回调函数flightHandler。
不知道你懂了没有。
------解决方案--------------------
调用函数 flightHandler
------解决方案--------------------
调用函数 flightHandler
flightHandler 是你自己定义的。。
PS: 这代码肯定不是你自己写的吧。。。。  学新东西的时候  自己动手 很重要
------解决方案--------------------

    var jsonp = {
      "code": "CA1998",
      "price": 1780,
      "tickets": 5
    };
    function flightHandler(data){
        return data;
    }
    alert(flightHandler(jsonp).price);