2016-07-29 72 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

*提示:**異步** * –

+0

$阿賈克斯是異步 –

+0

那麼,爲什麼我安慰記錄下來,但不能迭代認爲它?沒有意義。我得到了什麼異步的手段,但這不應該是這樣。 –

回答

-2

使異步爲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'。 –

相關問題