为什么我不能迭代这个对象?

时间:2016-07-29 22:47:10

标签: javascript jquery javascript-objects

我正在尝试迭代一个对象,但jquery $ .each不会触发。 这是$ fileNames变量的结果:

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.
}); 

});

为什么不起作用?

1 个答案:

答案 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 + ",", "");
        }
      }
    });

或者在成功或完整方法中调用函数(即$ .each())