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

Javascript 为什么我不能迭代这个对象?,javascript,jquery,javascript-objects,Javascript,Jquery,Javascript Objects,我试图迭代一个对象,但是jquery$。每个都不会启动。 这是$fileNames变量的结果: 这是我到目前为止构建的代码: $("input[type=button]").on("click", function(){ $searchtag = ''; $files = ''; $fileNames = {}; // first get all files in the directory $.ajax({ url: "php/cse.php", data: "requestFil

我试图迭代一个对象,但是jquery$。每个都不会启动。 这是$fileNames变量的结果:

这是我到目前为止构建的代码:

$("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.
}); 
$(“输入[type=button]”)。在(“单击”,函数(){
$searchtag='';
$files='';
$fileNames={};
//首先获取目录中的所有文件
$.ajax({
url:“php/cse.php”,
数据:“requestFileNames=true”,
方法:“张贴”,
成功:功能(结果){
$result=JSON.parse(result.toString();
$result+=“,”;
$count=($result.match(/o/g)| |[])。长度+1;

对于(var i=1;iMake 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 + ",", "");
        }
      }
    });
$.ajax({
url:“php/cse.php”,
数据:“requestFileNames=true”,
方法:“张贴”,
**async:false**
成功:功能(结果){
$result=JSON.parse(result.toString();
$result+=“,”;
$count=($result.match(/o/g)| |[])。长度+1;

对于(var i=1;我提示:asynchronous.$.ajax是asynchronous那么,为什么我可以控制台记录它,而不是迭代它呢?没有意义。我知道asynchronous的意思,但不应该是这样。
console.log()
总是在回调
success()之前被调用
处理程序。将
控制台.log()
$移动到
success()
处理程序中,您可能会看到不同的结果(取决于
$.ajax()
请求是否返回任何内容).Ahh.因为
控制台
将在您打开并查看对象后更新该对象。因此它似乎在那里,但在调用
控制台.log()
时,它是空的。通过记录
控制台.log(JSON.stringify($fileNames))来确认
相反。我自己认为这是令人困惑的,而且是出于内存考虑而做的。建议使用
async:false