Asp.net 使用 Jsonp

简介

由于JavaScript的安全机制,ajax不支持跨域调用.所以出现了jsonp.

实现

服务器

public string Jsonp(string name)
{
	string result = string.Format("Welcome {0}", name);
	StringBuilder sb = new StringBuilder();
	string callback = Request.QueryString["callback"] != null ? Request.QueryString["callback"] : "?";
	JavaScriptSerializer js = new JavaScriptSerializer();
	sb.Append(callback + "(");
	sb.Append(js.Serialize(result));
	sb.Append(");");

	//可以直接使用response
	//Response.Write(sb.ToString());
	//不可以返回json格式数据,返回必须是字符串格式,可以试试改为返回JsonResult,在开发者模式中查看两者Response的区别
	//return Json(sb.ToString(),JsonRequestBehavior.AllowGet);

	return sb.ToString();
}

页面调用,在另一解决方案中实现

<button onclick="fun()">jsonp</button>
<script type="text/javascript">

     function fun() {
        var name = 'ch';
        $.ajax({
            url: 'http://localhost:17099/home/Jsonp',
            method: 'GET',
            jsonp: 'callback',
            data: 'name=' + name,
            dataType: 'JSONP'
        }).done(function (data) {
            alert(data);
        }).error(function(data) {
            alert("error");
        });
    };

</script>

Tips

jsonp: 'callback',

json标识符可以自定义,不过前后端要保持一致

posted @ 2016-07-31 12:42  夕先生  阅读(413)  评论(0编辑  收藏  举报