<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        HTML5文件上傳插件遇到的技術(shù)問題

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 15:08:12
        文檔

        HTML5文件上傳插件遇到的技術(shù)問題

        HTML5文件上傳插件遇到的技術(shù)問題:總結(jié)我做HTML5文件上傳插件遇到的技術(shù)問題先貼上源碼:fileupload-html5.js(PS:公司使用seajs框架)問題列表1. jquery.ajax沒有監(jiān)聽上傳進度的onprogress事件。2. XMLHttpRequest(XHR)跨域問題解答1. jQuery沒有給出onprogress事件
        推薦度:
        導(dǎo)讀HTML5文件上傳插件遇到的技術(shù)問題:總結(jié)我做HTML5文件上傳插件遇到的技術(shù)問題先貼上源碼:fileupload-html5.js(PS:公司使用seajs框架)問題列表1. jquery.ajax沒有監(jiān)聽上傳進度的onprogress事件。2. XMLHttpRequest(XHR)跨域問題解答1. jQuery沒有給出onprogress事件

        總結(jié)我做HTML5文件上傳插件遇到的技術(shù)問題

        先貼上源碼:fileupload-html5.js(PS:公司使用seajs框架)

        問題列表

        1. jquery.ajax沒有監(jiān)聽上傳進度的onprogress事件。

        2. XMLHttpRequest(XHR)跨域

        問題解答

        1. jQuery沒有給出onprogress事件的接口,必須從其他接口中找到原生XHR對象。

        jQuery.ajax()返回的是jqXHR對象。jqXHR模仿XHR(原生),但沒有模仿實現(xiàn)XHR的所有方法和屬性(如:.upload),即使jqXHR增加了一個特有方法(如:.promise())。所以jqXHR并不是XHR的超集。

        //下面是截取jQ內(nèi)部的源碼,$.ajax();返回的就是這個jqXHR(偽造XMLHttpRequest)

        // Fake xhr
         jqXHR = {
         readyState: 0,

        XHR的upload屬性指向XMLHttpRequestUpload(IE10是XMLHttpRequestEventTarget),該對象的onprogress事件可以監(jiān)聽上傳進度。既然jQ沒有給出這個功能的api,但jQ某些數(shù)據(jù)上傳方式是使用XHR的,所以我們可以從其它api中找到XHR。在XHR發(fā)送數(shù)據(jù)之前綁定onprogress事件可以實現(xiàn)上傳進度功能。

        我從options參數(shù)配置中找到兩個與XHR有關(guān)的屬性:

        - xhr:回調(diào)創(chuàng)建XMLHttpRequest對象。

        xhr()返回值是XHR,提供給jQ使用,即發(fā)送數(shù)據(jù)就是用這個XHR。我們可以通過xhr創(chuàng)建一個回調(diào)函數(shù)覆蓋它,同樣返回XHR,但在此綁定onprogress事件。

        //jQ源碼

        // Get a new xhrvar handle, i, xhr = s.xhr();//[回調(diào)]在這里,下面是open方法// Open the socket// Passing null username, generates a login popup on Opera (#2865)if ( s.username ) { xhr.open( s.type, s.url, s.async, s.username, s.password );} else { xhr.open( s.type, s.url, s.async );}
        所以我們應(yīng)該這樣做:
        $.ajax({ //..... xhr: function() { var xhr = $.ajaxSettings.xhr(); //綁定上傳進度的回調(diào)函數(shù) xhr.upload.addEventListener('progress', progress, false); return xhr;//一定要返回,不然jQ沒有XHR對象用了 }});

        - xhrFields:一對“文件名-文件值”組成的映射,用于設(shè)定原生的 XHR對象。

        xhrFields屬性指向jQ內(nèi)部創(chuàng)建的XHR,我們可以根據(jù)xhrFields獲得XMLHttpRequest。由于xhrFields的值只能是json對象,所以不能以下面方式獲取。

        //錯誤例子

        $.ajax({
         //......
         xhrFields: {
         upload.onprogress: function() {
         //語法錯誤
         }
         }
        });

        我們可以借助XHR的onsendstart事件,如下:

        $.ajax({
         //......
         xhrFields: {
         onsendstart: function() {
         //this是指向XHR
         this.upload.addEventListener('progress', progress, false);
         }
         }
        });

        2. XMLHttpRequestⅡ(XHR)支持跨域,但需要后臺允許。

        //后臺需發(fā)送頭部驗證

        if($_REQUEST['cros']) {
         header("Access-Control-Allow-Origin:請求的域名");
        }

        根據(jù)后臺給的接口,我需要增加一個參數(shù)cros。但我將這個參數(shù)與文件同事提交,卻提示跨域限制。最后將這個參數(shù)放在url才行。
        原來XHR跨域是有兩次請求的,第一次是驗證請求,瀏覽器根據(jù)請求目的地址自動發(fā)出options請求。若通過,才能發(fā)出自定義的post請求。所以將參數(shù)放在post請求里,第一次請求沒有cros參數(shù),即不能通過。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        HTML5文件上傳插件遇到的技術(shù)問題

        HTML5文件上傳插件遇到的技術(shù)問題:總結(jié)我做HTML5文件上傳插件遇到的技術(shù)問題先貼上源碼:fileupload-html5.js(PS:公司使用seajs框架)問題列表1. jquery.ajax沒有監(jiān)聽上傳進度的onprogress事件。2. XMLHttpRequest(XHR)跨域問題解答1. jQuery沒有給出onprogress事件
        推薦度:
        標簽: 文件 上傳 錯誤
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲一级毛片视频| 国产成人高清亚洲一区久久| 久久久亚洲欧洲日产国码是AV| 亚洲色中文字幕在线播放| 成在线人视频免费视频| 老司机在线免费视频| 久久亚洲国产欧洲精品一| 精品国产日韩亚洲一区91| 1000部国产成人免费视频| 亚洲国产一区明星换脸| 亚洲AV无码无限在线观看不卡| 特级做A爰片毛片免费看无码 | 国产成人A人亚洲精品无码| 人人爽人人爽人人片av免费| 免费无码肉片在线观看| 久久久久亚洲精品成人网小说| 国产精品亚洲va在线观看| 亚洲精品无码激情AV| 拍拍拍无挡视频免费观看1000| 亚洲成人在线网站| 少妇高潮太爽了在线观看免费| 亚洲AV综合色区无码一区爱AV| 免费大片av手机看片| 精品国产一区二区三区免费看| 亚洲福利秒拍一区二区| 大地资源网高清在线观看免费 | 大学生一级特黄的免费大片视频 | 成年人免费观看视频网站| 亚洲色图综合网站| 毛片a级毛片免费播放下载| 色婷婷精品免费视频| 四虎免费永久在线播放| 亚洲AV噜噜一区二区三区| 国产美女在线精品免费观看| 国产精品亚洲色图| 亚洲国产成人久久精品动漫| 久久精品免费视频观看| 亚洲短视频男人的影院| 女人让男人免费桶爽30分钟| 国产一级黄片儿免费看| 亚洲一级毛片中文字幕|