2017-01-10 7 views
0

ここでは、要件のユーザーが複数の画像を選択して送信ボタンをクリックすると、値(ファイル)とbase64でエンコードされ、ここで、文字列、選択した画像には細かい作業が、プレスは、あなたが「呼び出しボタンを送信すると、私はこのエラーBase64でエンコードされた画像が送信ボタンで機能しない

$(document).ready(function(){ 
 
    $("input[name=property_images]").change(function() { 
 
     var imgBase64Arr = []; 
 
     var files = this.files; 
 
     for (var i = 0; i < files.length; i++) { 
 
     (function(i){ 
 
      var FR = new FileReader(); 
 
      FR.onload = function(e) { 
 
\t \t \t 
 
\t \t \t var res = e.target.result ; 
 
\t \t \t var arr1 = res.split(","); 
 
\t \t \t var property_image = arr1[1] ; 
 
      imgBase64Arr.push(property_image);//adding base64 value to array 
 

 
      if(i === files.length -1)//after all files are porcessed 
 
       myFunction(imgBase64Arr) 
 
      }; 
 
      FR.readAsDataURL(files[i]); 
 
     })(i); 
 
     } 
 

 
    }); 
 
    
 
}); 
 

 
function myFunction(imgBase64Arr){ 
 
    console.log(imgBase64Arr); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
<input type="file" name="property_images" multiple="multiple" /> 
 
<input type="button" value="submit" onclick="myFunction()">

+0

あなたは何も渡さずにmyFunctionを呼び出します! imgBase64Arrは未定義なので未定義です。それを修正すると、imgBase64Arrはchangeメソッドで定義されているため、imgBase64Arrの外側で評価することはできません。 – epascarello

+0

関数に引数を指定していません: 'myFunction()'。 'console.log(imgBase64Arr);を実行するとき、' 'imgBase64Arr'は未定義です。 –

+0

onchange私はこのようなmyFunction(imgBase64Arr)のような画像を渡しています。 –

答えて

0

を解決する方法が未定義取得しています送信ボタンを行くだろうその時に変換myFunction "何も渡さずに..

$(document).ready(function(){ 
 
    var imgBase64Arr = []; 
 
    $("input[name=uploadBtn]").click(function(){ 
 
     console.log(imgBase64Arr); 
 
    }); 
 
    $("input[name=property_images]").change(function() { 
 
     imgBase64Arr = []; 
 
     var files = this.files; 
 
     for (var i = 0; i < files.length; i++) { 
 
     (function(i){ 
 
      var FR = new FileReader(); 
 
      FR.onload = function(e) { 
 
\t \t \t 
 
\t \t \t var res = e.target.result ; 
 
\t \t \t var arr1 = res.split(","); 
 
\t \t \t var property_image = arr1[1] ; 
 
      imgBase64Arr.push(property_image);//adding base64 value to array 
 

 
      if(i === files.length -1)//after all files are porcessed 
 
       myFunction(imgBase64Arr) 
 
      }; 
 
      FR.readAsDataURL(files[i]); 
 
     })(i); 
 
     } 
 

 
    }); 
 

 

 
    
 
}); 
 

 
function myFunction(imgBase64Arr){ 
 
    console.log(imgBase64Arr); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
<input type="file" name="property_images" multiple="multiple" /> 
 
<input type="button" name="uploadBtn" value="submit">

0

あなたimgBase64Arr変数がグローバルに定義されていません。それをグローバルに定義してください。

関連する問題