亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 XMLHttpRequest.onreadystatechange 回調函數中讀取

如何在 XMLHttpRequest.onreadystatechange 回調函數中讀取

一只名叫tom的貓 2022-01-07 10:44:27
在下面的代碼中,我需要在函數中讀取變量的值ext(在函數內部定義reader.onloadend)xhr.onreadystatechange。眼下正在回歸undefined。任何想法如何解決這個問題?function file_upload(file_input) {  var name = file_input.dataset.target;  var url = file_input.dataset.url;  var path = file_input.dataset.path;  var ext;  for(var i = 0; i<file_input.files.length; i++) {    var file = file_input.files[i];    var xhr = new XMLHttpRequest();    xhr.open("POST", url, true);    xhr.onreadystatechange = function() {        if (xhr.readyState == 4 && xhr.status == 200) {            var id = xhr.responseText;            var input = document.createElement("input");            input.setAttribute("type", "hidden");            input.setAttribute("name", name);            input.setAttribute("value", id);            document.getElementById("btn_uload_"+name+"_"+ext).append(input);            document.getElementById("empty_file").style.display = 'none';            document.getElementById("single_file_"+ext).style.display = 'block';        }    };    var reader  = new FileReader();    reader.onloadend = function() {      var bytes = reader.result;      var ext = file.name.split(".").pop();      var formData = new FormData();      formData.append('bytes', bytes);      formData.append('type', ext);      xhr.send(formData);    }    reader.readAsDataURL(file);  }}
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

var ext =...從只為該函數創建局部變量的讀取器回調中刪除(它沒有設置外部變量。即使您刪除var關鍵字以便它開始設置外部ext變量,您最終也會遇到此 q&a 中討論的問題


將您的分配移動到循環的頂部(而不是函數的頂部)。并使用它let代替var這種方式,它是塊范圍的,不會遇到前面提到的問題


for(var i = 0; i<file_input.files.length; i++) {

    var file = file_input.files[i];

    let ext = file.name.split('.').pop();


查看完整回答
反對 回復 2022-01-07
  • 1 回答
  • 0 關注
  • 327 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號