亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

改造請求參數-Ajax之二

2019-11-17 03:36:30
字體:
來源:轉載
供稿:網友

接上篇。引入了一個私有函數_serialize,它會把js對象串行化成HTTP所需參數模式,接受如下兩種結構

1{name:'jack',age:20} --> name=jack&age=20
2{fruit:['apple','banana','orange']} --> fruit=apple&fruit=banana&fruit=orange

請求后臺的一個servlet,發送參數name=jack,age=20,默認使用異步,GET方式?,F在data可以如下了

01Ajax.request('servlet/ServletJSON',{
02        data : {name:'jack',age:20},
03        success : function(xhr){
04            //to do with xhr
05        },
06        failure : function(xhr){
07            //to do with xhr
08        }
09    }
10);

完整代碼

01Ajax = 
02function(){
03    function request(url,opt){
04        function fn(){}
05        var async   = opt.async !== false,
06            method  = opt.method    || 'GET',
07            encode  = opt.encode    || 'UTF-8',
08            data    = opt.data      || null,
09            success = opt.success   || fn,
10            failure = opt.failure   || fn;
11            method  = method.toUpperCase(); 
12        if(data && typeof data == 'object'){//對象轉換成字符串鍵值對
13            data = _serialize(data);
14        }
15        if(method == 'GET' && data){
16            url += (url.indexOf('?') == -1 ? '?' : '&') + data;
17            data = null;
18        }
19        var xhr = window.xmlHttpRequest ? new xmlhttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
20        xhr.onreadystatechange = function(){
21            _onStateChange(xhr,success,failure);
22        };
23        xhr.open(method,url,async);
24        if(method == 'POST'){
25            xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=' + encode);
26        }
27        xhr.send(data);
28        return xhr;
29    }
30    function _serialize(obj){
31        var a = [];
32        for(var k in obj){
33            var val = obj[k];
34            if(val.constructor == Array){
35                for(var i=0,len=val.length;i<len;i++){
36                    a.push(k + '=' + encodeURIComponent(val[i]));
37                }
38            }else{
39                a.push(k + '=' + encodeURIComponent(val));
40            }
41        }
42        return a.join('&');
43    }
44    function _onStateChange(xhr,success,failure){
45        if(xhr.readyState == 4){
46            var s = xhr.status;
47            if(s>= 200 && s < 300){
48                success(xhr);
49            }else{
50                failure(xhr);
51            }
52        }else{}
53    }
54    return {request:request};
55}();

這里僅僅是使data可以是對象類型,貌似沒啥大用。但如果與表單(form)結合的話還是很有用的。當我們使用form但又想用Ajax方式提交,那么把form中元素序列化成HTTP請求的參數類型是一個費勁的活。這里寫個工具函數formToHash,將form元素按鍵值形式轉換成對象返回

01function formToHash(form){
02    var hash = {}, el;
03    for(var i = 0,len = form.elements.length;i < len;i++){
04        el = form.elements[i];
05        if(el.name == "" || el.disabled) continue;
06        switch(el.tagName.toLowerCase()){
07        case "fieldset":
08            break;
09        case "input":
10            switch(el.type.toLowerCase()){
11            case "radio":
12                if(el.checked)
13                    hash[el.name] = el.value;
14                break;
15            case "checkbox":
16                if(el.checked){
17                    if(!hash[el.name]){
18                        hash[el.name] = [el.value];
19                    }else{
20                        hash[el.name].push(el.value);
21                    }
22                }
23                break;
24            case "button":
25                break;
26            case "image":
27                break;
28            default:
29                hash[el.name] = el.value;
30                break;
31            }
32            break;
33        case "select":
34            if(el.multiple){
35                for(var j = 0, lens = el.options.length;j < lens; j++){
36                    if(el.options[j].selected){
37                        if(!hash[el.name]){
38                            hash[el.name] = [el.options[j].value];
39                        }else{
40                            hash[el.name].push(el.options[j].value);
41                        }
42                    }
43                }
44            }else{
45                hash[el.name] = el.value;
46            }
47            break;
48        default:
49            hash[el.name] = el.value;
50            break;
51        }
52    }
53    form = el = null;
54    return hash;
55}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97视频在线播放| 国产黑人绿帽在线第一区| 欧美特级www| 日韩女优在线播放| 国产欧美精品久久久| 日韩极品精品视频免费观看| 亚洲国产精品小视频| 大桥未久av一区二区三区| 精品日韩中文字幕| 黑人与娇小精品av专区| 午夜欧美大片免费观看| 成人国产精品免费视频| 国产免费一区二区三区香蕉精| 伊人久久久久久久久久久久久| 性色av一区二区三区在线观看| 视频在线观看一区二区| 欧美色videos| zzijzzij亚洲日本成熟少妇| 中文字幕精品国产| 久久久亚洲影院| 亚洲精品美女网站| 久久亚洲春色中文字幕| 日韩有码在线观看| 欧美中文在线观看| 亚洲欧美激情另类校园| 久久人人爽人人爽人人片亚洲| 国产精品av电影| 国产精品久久久久不卡| 中文字幕日本精品| 亚洲天堂av在线免费观看| 久久亚洲私人国产精品va| 成人欧美一区二区三区在线| 日韩午夜在线视频| 少妇久久久久久| 亚洲黄色片网站| 色婷婷成人综合| 欧美裸体xxxx极品少妇| 国产午夜精品理论片a级探花| 日韩综合视频在线观看| 欧美午夜片欧美片在线观看| 久久影视三级福利片| 毛片精品免费在线观看| 91精品国产综合久久香蕉最新版| 91九色国产社区在线观看| 国产91精品久久久| 国产成人精品av在线| 亚洲美女av在线播放| 精品国模在线视频| 日韩成人在线免费观看| 日韩电影免费观看在线观看| 国产成人久久久| 国产香蕉97碰碰久久人人| 78色国产精品| 亚洲福利视频网| 国产中文字幕91| 久久久久久久久久久免费精品| 最新69国产成人精品视频免费| 日韩在线观看免费全集电视剧网站| 欧美最顶级丰满的aⅴ艳星| 国产精品欧美在线| 4444欧美成人kkkk| 国产精品一区二区久久国产| 欧美黑人一区二区三区| 久久在精品线影院精品国产| 欧美一级视频免费在线观看| 亚洲一区二区免费在线| 国产亚洲欧洲黄色| 亚洲精品xxx| 亚洲wwwav| 成人写真视频福利网| 性视频1819p久久| 国产欧美一区二区三区视频| 国产精品视频1区| 中文字幕久久精品| 欧美日韩免费一区| 亚洲成人网在线| 中文字幕日韩在线播放| 日韩h在线观看| 亚洲欧美日韩成人| 国产一区二区三区四区福利| 久久亚洲电影天堂| 欧美大片大片在线播放| 美日韩精品免费视频| 欧美在线免费视频| 成人性生交大片免费看小说| 日韩av快播网址| 亚洲精品v欧美精品v日韩精品| 日韩成人性视频| 在线电影av不卡网址| 欧美电影在线观看网站| 欧美中文字幕在线视频| 亚洲欧洲日产国码av系列天堂| 91精品综合久久久久久五月天| 欧美视频13p| 揄拍成人国产精品视频| 午夜欧美不卡精品aaaaa| 欧美电影免费观看电视剧大全| 色偷偷偷综合中文字幕;dd| 日韩久久午夜影院| 欧美影院在线播放| 欧美黑人极品猛少妇色xxxxx| 中文字幕在线日韩| 亚洲美女av在线| 亚洲一区国产精品| 欧美激情综合色综合啪啪五月| 亚洲欧美日韩区| 国产成人综合精品在线| 久久精品美女视频网站| 欧美最猛性xxxxx(亚洲精品)| 久久国产精品久久久久久| 欧美性猛交xxxxx水多| 久久久精品网站| 国产成人精品久久二区二区| 欧美成人免费观看| 91牛牛免费视频| 福利二区91精品bt7086| 成人午夜激情网| 欧美电影电视剧在线观看| 国产综合在线看| 欧美一区二区三区四区在线| 久久中文字幕视频| 国产精品免费久久久久影院| 国产精品电影久久久久电影网| 亚洲天堂av在线免费| 国产精品啪视频| 日韩国产在线播放| 黑人巨大精品欧美一区二区一视频| 国产精品18久久久久久首页狼| 国产精欧美一区二区三区| 欧美wwwxxxx| 欧美在线www| 日韩精品视频在线| 国产精品久久久久久久av电影| 亚洲欧美日本伦理| 日韩精品在线第一页| 97色在线视频| 成人动漫网站在线观看| 欧美精品在线免费观看| 亚洲2020天天堂在线观看| 亚洲男人天天操| 九九热精品视频在线播放| 久久久极品av| 亚洲国产免费av| 亚洲二区中文字幕| 91av视频在线免费观看| 亚洲最大成人在线| 国产一区二区久久精品| 精品久久久久久久久久国产| 国产精品视频免费在线| 色哟哟亚洲精品一区二区| 国产亚洲人成a一在线v站| 日韩欧美高清在线视频| 日韩欧美国产激情| 福利视频一区二区| 欧美精品日韩三级| 国产精品狠色婷| 91国产精品91| 夜夜躁日日躁狠狠久久88av| 久久天天躁狠狠躁夜夜躁| 国产亚洲日本欧美韩国| 亚洲色图在线观看| 国产午夜精品理论片a级探花| 久久99精品久久久久久噜噜| 成人日韩av在线|