1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用jsonp及jquery的$.ajax解决跨域问题

使用jsonp及jquery的$.ajax解决跨域问题

时间:2020-05-17 12:48:56

相关推荐

使用jsonp及jquery的$.ajax解决跨域问题

跨域是指代码获得或者更改从另一个域名下获得的文件或者信息。当执行这类操作时,一般会报“拒绝操作”,“无权限”等 一般我利用三种方法: 服务器后端处理,我直接发送把另一个域当做get/post参数过去,服务器再直接利用http请求得到返回值,输出给我,作为success iframe跨域,现在我已经不用了。。 jsonp。只是了解,最近通过项目加深了印象。 原理是页面中使用动态代码元素,代码的源指向服务地址并在自己的代码中加载数据。当这些代码加载执行的时候,就不会出现“禁止访问”的问题。 原生js的demo(参照网上) [crayon-50361f9fdae69/] 这样就可以通过执行ticker.js,得到data,而这个ticker.js,是没有啥限制的。 项目实战 [crayon-50361f9fdb24e/] 后端: [crayon-50361f9fdb636/] 这么写有几个要点在里面: 1 jsonp是需要后端配合的,因此他需要接受一个参数叫做 callbackparam。当然这个名字可以自己定义。 例子: ($funparam=$_REQUEST["callbackparam"];) 输出也要严格的是这种格式: $funname.’(‘.$pageContents.’)’ 即 回调函数名 + json 以这个例子来说,输出为 111({“message”:”ok”,”list”:[{"gridcode":"5916566401","y":"39.801185","x":"116.80606"},{"gridcode":"5816274211","y":"38.870651","x":"116.905822"}]} ) 这种格式 ,这样的格式 经过jquery解析,才会变成 {“message”:”ok”,”list”:[{"gridcode":"5916566401","y":"39.801185","x":"116.80606"},{"gridcode":"5816274211","y":"38.870651","x":"116.905822"}]} 这就是我们想要的json 2 前端的几个参数解释 传统写法 [crayon-50361f9fdba1e/] [crayon-50361f9fdbe03/] 支持jsonp的写法 [crayon-50361f9fdc1ee/] 当我们这么写时,jq会认为我们在做jsonp操作,因此会帮我们处理好回调函数,自动将callbackparam加入url中。返回就是json对象了。 [crayon-50361f9fdc5d3/] ajax请求参数说明: dataTypeString 预期服务器返回的数据类型。如果不指定,jQuery将自动根据HTTP包MIME信息来智能判断,比如XMLMIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值: “xml”:返回XML文档,可用jQuery处理。 “html”:返回纯文本HTML信息;包含的script标签会在插入dom时执行。 “script”:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了“cache”参数。”’注意:”’在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载) “json”:返回JSON数据。 “jsonp”:JSONP格式。使用JSONP形式调用函数时,如“myurl?callback=?”jQuery将自动替换?为正确的函数名,以执行回调函数。 “text”:返回纯文本字符串 jsonpString 在一个jsonp请求中重写回调函数的名字。这个值用来替代在“callback=?”这种GET或POST请求中URL参数里的“callback”部分,比如{jsonp:’onJsonPLoad’}会导致将“onJsonPLoad=?”传给服务器。 jsonpCallbackString [...]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。