WebApp开发之ajax请求跨域的解决方法
白羽 2018-06-14 来源 :网络 阅读 480 评论 0

摘要:本文将带你了解WebApp开发之ajax请求跨域的解决方法,希望本文对大家学WEBAPP有所帮助。




服务端:PHP

客户端:Andorid, HTML5, jQuery, ajax

现象:本想通过jQuery的ajax功能从服务器取回数据存到手机的缓存里,结果总是错误,后来想到可能是跨域问题,所以查了下jsonp的方案先把流程跑通,明天再完善看看有什么好的方案

服务端://www.code-style.com/test/a.php
 
<?php
//服务端返回JSON数据$arr=array('name'=>'shujun.li');$result=json_encode($arr);
 
//动态执行回调函数$callback=$_GET['callback'];echo $callback."($result)";?>
 
客户端
 
<!DOCTYPE html><html><head>
    <meta charset="utf-8">
    <title>Listview AutodividersSelector - jQuery Mobile Demos</title>
    <script src="js/jquery.js"></script>
    
    <script type="text/javascript">
    $.ajax({
        url:"//www.code-style.com/test/a.php",
        dataType:'jsonp',
        data:'',
        jsonp:'callback',
        success:function(result) {
            alert(result["name"])
        },
        timeout:3000
    });</script></head><body></body></html>
 
 
生成URL : //www.code-style.com/test/a.php?callback=jQuery1102004144126083701849_1420635061128&_=1420635061129
响应:jQuery1102004144126083701849_1420635061128({"name":"shujun.li"})
JSONP原理解析:
相当于jquery在页面生成一个匿名函数,这个函数可以传入一个JS对象,然后把这个函数的函数名作为URL参数传递给服务器端,服务端吐出的实际上是对这个函数的调用语句,输出到了页面以后会通过eval执行这个调用,这个匿名函数会再次调用我们的success函数,最终这么拿的数据,如果这样的话JSONP无法大规模的传输数据
 
 
    $.ajax({
        url:"//www.code-style.com/test/a.php",
        dataType:'jsonp',
        data:'',
        jsonp:'callback',
        success: function(result) {
            alert(result["name"])
        },
        timeout: 3000,
        jQuery1102004144126083701849_1420635061128(obj)
        {
            success(obj);
        }
    });


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程