下面小编就为大家带来一篇深入理解jquery跨域请求方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

项目中关于ajax jsonp的使用,

出现了问题:可以成功获得请求结果,但没有执行success方法

总算搞定了,记录一下

function TestAjax() {  $.ajax({    type : "get",    async : false,    url : "ajaxHandler.ashx", //实际问时产生的地址为: ajax.ashx?callbackfun=jsonpCallback&id=10    data : {id : 10},    cache : false, //默认值true    dataType : "jsonp",    jsonp: "callbackfun",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)    jsonpCallback:"jsonpCallback",      //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名      //如果这里自定了jsonp的回调函数,则success函数则不起作用;否则success将起作用    success : function(json){      alert(json.message);    },    error:function(){      alert("erroe");    }  });}function jsonpCallback(data) //回调函数{  alert(data.message); //} public class ajaxHandler : IHttpHandler{  public void ProcessRequest (HttpContext context) {    context.Response.ContentType = "text/plain";    string callbackfun = context.Request["callbackfun"];    context.Response.Write(callbackfun + "({name:"John", message:"hello John"})");    context.Response.End();  }  public bool IsReusable {get {return false;}}

ajax请求参数说明:

dataType string 服务器返回的数据类型。

如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。

可用值:

"xml": 返回 XML 文档,可用 jQuery 处理。

"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。

"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。

注意:在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

"json": 返回 JSON 数据 。

"text": 返回纯文本字符串

"jsonp":jsonp格式。使用jsonp形式调用函数时,

访问url时会自动将url后面添加上如"callback=callbackFunName" 以执行回调函数(callbackFunName)。

jsonp string

在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种get或post请求中url参数里的"callback"部分,

比如 jsonp:'callbackfun' 则将会生成"callbackfun=?"传给服务器。

jsonpCallback String  此参数为jsonp请求指定一个回调函数名。

这个值将用来取代jQuery自动生成的随机函数名。 即上面"callback=?"中的问号部分

这主要用来让jQuery生成度独特的函数名,这样请求更容易,也能方便地提供回调函数和错误处理。

也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。

 ajax jsonp与普通的ajax请求的主要区别在于——请求响应结果的处理。如上面代码所示的响应结果为:

  jsonpCallback({ name:"world",message:"hello world"});

实际上就是调用jsonp回调函数jsonpCallback,并将要响应的字符串或json传入此方法,

关于自定了jsonp的回调函数, success函数则不起作用

大概其底层的实现(当然这是默认的回调函数的时候,否则就不会执行success的方法吧):

function default_jsonpCallback(data){  success(data); //在默认的回调方法中执行}

最后一个比较简单的方法,

$.getJSON("GetUserbyName.aspx?name=ww&callback=?",function(date){//....})

以上这篇深入理解jquery跨域请求方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持爱安网。

最新资讯
财报解读|腾讯资源成斗鱼虎牙关键性增量 二者将迎竞争or和平?

财报解读|腾讯资源成

斗鱼与虎牙的“距离”在越来越靠近。
5G手机降至1500元 卢伟冰:今年1500元以上新机全上5G

5G手机降至1500元 卢

小米旗下品牌Redmi今日举行新品发布会,发布了全新X系列
瑞幸盘中涨超70% 猜测称可能有资金在赌有"援兵"接盘

瑞幸盘中涨超70% 猜测

目前,瑞幸咖啡官方尚未披露摘牌听证进展。有猜测称,可能
传将进行香港二次上市聆讯:京东涨8.46% 网易涨5.23%

传将进行香港二次上市

截至北京时间22:48,京东涨8.46%,报54.12美元。当前市值
纳指涨1.36% 瑞幸咖啡涨幅扩至63.31%

纳指涨1.36% 瑞幸咖啡

截止北京时间22:15,纳指涨1.36%或127.10点,报9451.68点,瑞
刘作虎:一加将扩展产品线与价格区段 率先在海外上市

刘作虎:一加将扩展产品

一直被外界称为“小而美”的一加手机可能也要求变了。
最新文章
Vue实现图片与文字混输效果

Vue实现图片与文字混

用多了 JQuery ,习惯了使用JQuery的API操作 DOM ,几乎忘
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)

Vue实现点击当前元素

这篇文章主要介绍了Vue实现点击当前元素以外的地方隐
Vue实现验证码功能

Vue实现验证码功能

这篇文章主要为大家详细介绍了Vue实现验证码功能,文中
JS实现的雪花飘落特效示例

JS实现的雪花飘落特效

这篇文章主要介绍了JS实现的雪花飘落特效,结合实例形
微信小程序实现图片压缩

微信小程序实现图片压

这篇文章主要为大家详细介绍了微信小程序实现图片压缩
JavaScript实现京东放大镜效果

JavaScript实现京东放

这篇文章主要为大家详细介绍了JavaScript实现京东放大