2016-07-29 8 views
-1

オブジェクトを反復しようとしていますが、jquery $ .eachは起動しません。 これは、$ファイル名変数の結果である:なぜこのオブジェクトを反復処理できないのですか?

This is the outcome of the $fileNames variable

が、これは私がこれまでに構築したコードです:

$("input[type=button]").on("click", function(){ 
$searchtag = ''; 
$files = ''; 
$fileNames = {}; 

// first get all files in the directory 
$.ajax({ 
    url: "php/cse.php", 
    data: "requestFileNames=true", 
    method: "POST", 
    success: function(result){ 
    $result = JSON.parse(result).toString(); 
    $result += ","; 
    $count = ($result.match(/o/g)||[]).length + 1; 
    for (var i = 1; i <= $count; i++) { 
     $fname = $result.substr(0, $result.indexOf(',')); 
     $fileNames[$fname] = {}; 
     $result = $result.replace($fname + ",", ""); 
    } 
    } 
}); 

console.log($fileNames); 
$.each($fileNames, function(key, value){ 
    // this does not fire, for some reason. 
}); 

});

なぜ機能しないのですか?

+4

内(すなわち$ .each())関数を呼び出します。**非同期** * –

+0

$アヤックスだから非同期 –

+0

で、なぜコンソールことができますそれをログに記録しますが、繰り返しは考えませんでしたか?意味がありません。私は非同期的な意味を持っていますが、そうではありません。 –

答えて

-2

asyncをfalseにすると、コードが一時停止します。

$.ajax({ 
     url: "php/cse.php", 
     data: "requestFileNames=true", 
     method: "POST", 
     **async: false,** 
     success: function(result){ 
     $result = JSON.parse(result).toString(); 
     $result += ","; 
     $count = ($result.match(/o/g)||[]).length + 1; 
     for (var i = 1; i <= $count; i++) { 
      $fname = $result.substr(0, $result.indexOf(',')); 
      $fileNames[$fname] = {}; 
      $result = $result.replace($fname + ",", ""); 
     } 
     } 
    }); 

それともヒント*成功または完全な方法

+0

'async:false'を使用することは非常にまれです。 –

関連する問題