解决Ajax(jsonp)跨域访问问题

来源:互联网 发布:淘宝上的内衣有图评论 编辑:程序博客网 时间:2024/04/30 18:50

JSONP(JSON with Padding)JSON的 一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 A服务器的网页无法与B的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

实例:

前端代码:
function GetArea() {
        $.ajax({
            type: "GET",
            cache: false,
            url:url,
            data: { Name: "zhangsan" },
            dataType: "jsonp",
            jsonpCallback: "BindArea"
        });
}
 
functionBindArea(data) {
    //处理data
console.log(data);
alert("数据:"+data);
}


后端代码:
[WebMethod]
public void GetArea(string name)
{
    string areajson= string.Empty;
    HttpContext.Current.Response.ContentType = "application/json;charset=utf-8";
    string jsonCallBack = HttpContext.Current.Request.Params["callback"].ToString();     
    Area area = AreaBLL.GetArea(Name);
    areajson= JsonConvert.SerializeObject(area );
    HttpContext.Current.Response.Write(string.Format("{0}({1})",jsonCallBack , areajson));
    HttpContext.Current.Response.End();
}


0 0
原创粉丝点击