0

だから私は興味深い問題を抱えています。他の Javascript ファイルを参照する前にグローバル変数を宣言しましたが、変数が引き継がれないようです。多分私はどこかでステップを逃していますか?

変数は、次のようなアップロードされたファイルの内容である文字列です。

function getText(s){ //creates a global variable that can hold the file
        window.text = s;
        console.log(window.text);
  };     
  function handleFileSelect(event) {
    var files = event.target.files; // The file that is uploaded
      var reader = new FileReader();                 
     reader.onloadend = function(event){            
        getText(event.target.result); //pulling out the content of the file
        loadScript('total.js',function(){ //starts app code
            window.text
        });
     };      
    reader.readAsText(files[0],"UTF-8");//required to read the text        
};           
  try{
        document.getElementById('files').addEventListener('change',
         handleFileSelect, false); //listens for the uploaded file
  }    
  catch(e){
        alert(e);
  };

したがって、ユーザーがファイルをアップロードすると、その内容が window.text にコピーされます。正しいものをキャッチしたことを確認するために、内容がログに記録されます。loadScriptその後、残りのアプリ コードの実行を開始できます。プログラムを続行するには、ユーザーがファイルを指定するのを待つ必要があり、AngularJS には奇妙な癖があったため、この方法で実行することが唯一の回避策でした。

の内容loadscript:

function loadScript(url, callback){

var script = document.createElement("script")
script.type = "text/javascript";

script.onload = function(){
    callback();
};

script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);

};

total.js次のコード行で始まり、最終的に出力につながります。

var csv=window.text;

すべてが機能します。出力は、空であるため保存する必要があるように見えます。つまり、window.text が正しくプルされていません。

コールバックが原因で、完全に完了していませんか? どうすればこれを解決できますか?

編集: コールバックの関数がまったく実行されていないことがわかったので、変数を渡すことの問題ではありません。しかし、PHPglue の入力はまだ有効です。ありがとう。

4

1 に答える 1