2016-07-29 75 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'。 –

相关问题