一个简单的jsonp例子

现在jsonp很流行看见很多人都写得很复杂,现在给一个简单的调用

首先写一个服务端,创建TestHandler.ashx

  public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "application/x-javascript";
            string callback = context.Request.QueryString["callback"].Trim();
            string name = context.Request.QueryString["name"].Trim();
            string str = callback + "([{\"SuitName\":\"" + name + "\"}]);";
            context.Response.Write(str);
        }
htm的代码:

 <div>
        <input type="button" id="btn1" value="Test Handler" />
        <div id="msg" style="background-color: Red; width: 100px; height: 50px">
        </div>
        <script type="text/javascript">
            function displayResult(data) {
                $("#msg").text(data[0].SuitName);
            }
            $(function () {

                $("#btn1").click(function () {
                    var url = "TestHandler.ashx?name=majiang&callback=displayResult"
                    $.getScript(url);

                });

            });
        </script>
    </div>

在这里通过getScript来做jsonp有一个缺陷是displayResult定义为一个全局的函数,如果你的jquey是1.6以上的版本,也可以用原始的ajax来做,代码如下:

 <div>
        <input type="button" id="btn1" value="Test Handler" />
        <div id="msg" style="background-color: Red; width: 100px; height: 50px">
        </div>
        <script type="text/javascript">
            $(function () {
                $("#btn1").click(function () {
                    $.ajax({
                        cache: true,
                        url: "TestHandler.ashx",
                        dataType: 'JSONP',
                        data: "name=majiang",
                        jsonp: 'callback',
                        jsonpCallback: 'displayResult',
                        success: function (data) {
                            $("#msg").text(data[0].SuitName)
                        }
                    });
                });

            });  
        </script>
    </div>
其中的jsonp: 'callback'  , jsonpCallback: 'displayResult',将作为url的追加部分callback=displayResult

呵呵 这样就可以了  够简单吧


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值