工作中很容易会遇到有接口开发,然后其他项目调用
如果其他项目ajax方式调用的 时候会出现跨域请求的问题,这次就让哥带着大家用JSONP解决这个小问题。
首先,对于ajax请求 js这样写:
jQuery(document).ready(function () { $.ajax({ type: "get",async: false,url: "http://localhost:63614/WebSite2/ajax.aspx",dataType: "jsonp",jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) jsonpCallback: "success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名 success: function (json) { alert(json); alert(json[0].name); },error: function () { alert('fail'); } }); });
请求的页面( localhost:63614/WebSite2/ajax.aspx)page_load里面这样写
protected void Page_Load(object sender,EventArgs e) { Response.ContentType = "text/plain"; string callbackFunName = Request["callbackparam"]; Response.Write(callbackFunName + "([ { name:\"Rocher\"} ] )"); Response.End(); }
测试成功!
关键点在于返回的数据格式上。请仔细看我返回的jsonp数据的格式。