为了更好的服务!分享
热搜:最后的问候

全站

    广告位置
    • 总篇数 (0)
    • 粉丝量 (3)

    php程序 ajax跨域问题

    • 2016-04-22 10:14:25
    • 来源:ctocode
    • 阅读量:1825
    • 收藏:0
    • 被赞:0
    • 作者:
    php/

    用手机看

    扫描二维码随身看资讯 使用手机 二维码应用 扫描右侧二维码,您可以
    1.在手机上细细品读~
    2.分享给你的微信好友或朋友圈~

    摘要

    php,ajax跨域,获取数据,案例为检查版本更新

    php程序代码:

            $version = $_GET['version'];
    	$version = trim ( $version );
    	$newest_version = '2.0.2016.04.22';
    	if($version == $newest_version)
    	{
    		$result_json['StatusCode'] = 200;
    		$result_json['msg'] = "已经是最新版本了~";
    	}
    	else
    	{
                    $result_json['StatusCode'] = 200;
    		$result_json['msg'] = "有新版本~请联系开发者~";
    	}
    	
    	/*重点*/
    	// +"("+$result_json+")"    解决跨域中问题  提示  【 token;】 的错误
    	//success_jsonpCallback为js中ajax中定义的 callbackparam调用的函数
    	//可以用jsonp中定义的callbackparam 来 $_GET['callbackparam'] 获取回调的函数
    	//最终为:
    	echo 'success_jsonpCallback(' . json_encode ( $result_json ) . ');';
    	exit ();

    HTML,JS程序代码:

      
           //加载JQ文件
     	  type="text/javascript" src="jquery.js" 
    	    
    	function versionUpdate(){  
    	    $.ajax({  
    	        type : "get",  
    	        async:false,  
    	        url : "http://localhost/ajax_kuayu.php",  
    	        dataType : "jsonp",  
    	        jsonp: "callbackparam", //服务端用于接收callback调用的function名的参数  
    	        jsonpCallback:"success_jsonpCallback", //callback的function名称  
    	        success : function(result){  
    	            if (result.StatusCode == 200) {
    		        alert(result.msg);
    			return;
    		    } else {
    		        alert(result.msg);
    		    }
    	        },  
    	        error:function(a,b,c){  
    	            alert(a+"++"+b+"++"+c);  
    	        }  
    	    });  
    	}  
      	//与上面 jsonpCallback定义的一样~回调成功函数处理方式,可以不写
            function success_jsonpCallback(){  
    	    alert('back');  
    	}  
     
        
            <  button onclick="versionUpdate()" >跨域AJAX< / button >


    最后PHP返回的数据是:

    success_jsonpCallback({

        "StatusCode":200,

        "msg":"u5df2u7ecfu662fu6700u65b0u7248u672cu4e86~"

    });

    即:

    success_jsonpCallback({

        "StatusCode":200,

        "msg":"已经是最新版本了~

    "});

    上面这一行的返回数据。其中(之前的是回调函数的名字。后面的内容是返回数据。


    ---------------------------------------------------------------------------------------------------

    这里使用了jq的jsonp功能。看介绍:

    如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。

    使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。

    服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。

    意思就是远程服务端需要对返回的数据做下处理,根据客户端提交的callback的参数,返回一个callback(json)的数据,而客户端将会用script的方式处理返回数据,来对json数据做处理。


    jQuery.getJSON也同样支持jsonp的数据方式调用。

    ---------------------------------------------------------------------------------------------------

    好处:

    能跨域取得数据。

    坏处:

    返回值的前面必须是回调函数的名字。所以远程函数必须能够提供这样的内容。


    转载请注明本网站 https://www.10yun.com/      谢谢~

    如有不懂得,可到底部【给我留言】联系站长QQ~

    微信扫一扫,看资讯
    aaa

    扫二维码或搜索微信公众号“十云“关注
    回复” 技术分享、职位、新闻、工作 “即可查看最新相关内容!
    赶快扫一扫吧~

    表羞涩嘛~喜欢就点我

    0

    分享吧~~:

    祝给予赞赏的伙伴,2019年发大财!

    相关阅读

    热门商品

    更多+

    剩余: 89 /299 有效日期:2014-12-31

    查看

    精彩专题
    • xxx独家授权礼包

    合作伙伴