多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > web前端 > jscript > 實(shí)例代碼分析:百度如何實(shí)現(xiàn)AJAX跨域

實(shí)例代碼分析:百度如何實(shí)現(xiàn)AJAX跨域

來源:程序員人生   發(fā)布時間:2014-02-28 10:33:53 閱讀次數(shù):3625次

  建站學(xué)院(LieHuo.Net)AJAX教程 大家在做網(wǎng)站時可能會遇到AJAX跨子域名的問題,這個問題對于技術(shù)高手來說可能并不難,但是對于新手來說可能是難題了,偶爾看到baidu的通行證處理都是在二級域名passport.baidu.com中處理的,但是baidu很多地方登錄都好像是用ajax處理的,他是怎么做的呢?研究了一下,發(fā)現(xiàn)一個小技巧。 咱們也借鑒一下。

  在http://zhidao.baidu.com/ 未登錄用戶回答問題時會用iframe調(diào)用http://zhidao.baidu.com/userlogin.html,userlogin.html有下面的javascript,代碼如下:

以下為引用的內(nèi)容:
<SCRIPT LANGUAGE="JavaScript">
document.domain="baidu.com";
<!--
function G(id){if(typeof(id)=="string"){return document.getElementById(id);}return id;}
function showInfo(obj){
    if(obj.checked == true){
        G("memInfo").style.display="block";
    }else{
        G("memInfo").style.display="none";
    }
}
function request(id,url){
    oScript = document.getElementById(id);
    var head = document.getElementsByTagName("head").item(0);
    if (oScript) {
        head.removeChild(oScript);
    }
    oScript = document.createElement("script");
    oScript.setAttribute("src", url);
    oScript.setAttribute("id",id);
    oScript.setAttribute("type","text/javascript");
    oScript.setAttribute("language","javascript");
    head.appendChild(oScript);
    return oScript;
}
var loginTimer=null;
var loginState=-1;
var tryTime=0;
function PSP_ik(isOk){
    if(isOk==0){
        G("errorInfo").style.display="none";
        loginState=1;
        if(parent.loginSuccess){
            parent.Pop.hide();
            parent.loginSuccess();
        }
    }
    else
    {
        loginFalse();
    }
}
function loginFalse(){
    loginState=0;
    var err=G("errorInfo");
    err.innerHTML="用戶名或密碼錯誤,請重新登錄";
    err.style.display="block";
    G("username").focus();
    tryTime++;
    if(tryTime>1){
        onLoginFailed();
    }
}
function onLoginFailed(){
    if(parent.onLoginFailed){
        parent.Pop.hide();
        parent.loginFailed();
    }else{
        document.login.u.value=escape("http://zhidao.baidu.com/q"+parent.location.search);
        doucment.login.submit();
    }
}
function loginTimeout(){
    if(loginState==-1){
        var err=G("errorInfo");
        err.innerHTML="操作超時,請重新登錄";
        err.style.display="block";
        G("username").focus();
    }
}
function userLogin(){
    var username=G('username').value;
    var password=G('password').value;
    var memPassport=G('memPassport').checked?"on":"off";
    if(username.length <=0||password.length <=0){G("username").focus();return false;}
    var url = 'https://passport.baidu.com/?logt&tpl=ik&t=0&keyname=ik&mem_pass='+memPassport+'&username='+username + '&loginpass=' +escape(password)+ '&s=' + (new Date()).getTime();
    loginState=-1;
    var login=request("loginScript",url);
    loginTimer = setTimeout(loginTimeout, 5000);
}
window.onload=function(){
    document.loginForm.username.focus();   
    document.getElementById("username").focus();
}
//-->
</SCRIPT>


  我們可以看到request方法處理異步請求使用動態(tài)往head中添加script而不是用xmlhttp發(fā)送get請求。妙就妙在這。我們知道調(diào)用javascript是沒有域的限制的。當(dāng)加載完成時一樣會執(zhí)行。當(dāng)然請求參數(shù)只能通過拼url的方式了。url通過服務(wù)器處理后直接輸出loginFalse()或者PSP_ik();
非常優(yōu)雅的解決了跨域的問題。

  這讓我們想到了用iframe當(dāng)ajax上傳文件一樣異曲同工。 如果不需要服務(wù)器反饋,google的點(diǎn)擊計(jì)數(shù)用new img().src=...; 當(dāng)然baidu這段腳本中還有一些小的技巧也值得我們學(xué)習(xí)。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 最近中文字幕在线播放 | 亚洲精品第二页 | 色综合天天综一个色天天综合网 | 亚洲精品一区亚洲精品 | 国产日韩亚洲欧洲一区二区三区 | 中文字幕乱码中文字幕 | 国产福利一区二区精品免费 | 欧美日韩免费大片 | 最近最新的中文字幕大全3 最近最新高清免费中文字幕 | 国产一区第一页 | 欧美6699| xart欧美在线播放精品4k | 国产三区视频在线观看 | 巨大黑人极品videos精品 | 一级aaaaaa毛片免费同男同女 | 波多野结衣久久精品免费播放 | 美女牲交视频一级毛片 | 日韩欧美色综合 | 国产精品视频网 | 日韩精品一区二区三区中文在线 | 亚洲精品日韩中文字幕久久久 | free性欧美hd | 国产美女激情 | 日韩欧美亚洲国产精品字幕久久久 | 最近最新免费中文字幕8 | 亚洲最大色网站 | 精品午夜寂寞黄网站在线 | 亚洲天堂第一 | 波多野结衣中文字幕视频 | 欧美白人黑人xxxx猛交 | 在线观看成年人免费视频 | 女性一级全黄生活片在线播放 | 免费在线一区二区三区 | 久久天天躁狠狠躁夜夜躁 | 伊人久久综合成人网小说 | 成人无遮挡免费网站视频在线观看 | 午夜一级精品免费毛片 | 男人边吃奶边玩下面舒服 | 欧美在线成人免费国产 | 欧美精品一区二区三区在线 | 日韩免费专区 |