将全局变量赋值给jQuery post()访问的php数组

时间:2011-11-22 16:03:57

标签: jquery global-variables phpjs

我是jQuery的新手(自一周以来)并且不明白为什么我不能将PHP(work.php)数组分配给全局var imgArrayThumbs。我正在调用由php opendir函数创建的图像名称数组。当我alert(imgArrayThumbs);我刚刚回来[object Object]时。有人可以帮忙吗?一直试图弄清楚它。

scripts.js中

var imgArrayThumbs = '';

$.post("work.php", { task: "imgArrayThumbs" }, function(data) {
  imgArrayThumbs = data;
});

alert(imgArrayThumbs);

work.php

include_once 'scripts/functions.php';

if($_POST['task'] == 'imgArrayThumbs'){
  imageArray('source/examples/thumbs', 'imgArrayThumbs');
}
elseif ($_POST['task'] == 'imgArray'){
  imageArray('source/examples/', 'imgArray');
}

的functions.php

function imageArray($dir, $arrayVar){
  $arrayName = array();

  $iNumber = 0;
  $open = opendir ($dir);
  while ($file = readdir( $open )){
    if($file == "." || $file == ".." || $file == ".DS_Store"){

    }else{ 
      $arrayName[$iNumber] = $file;
      $iNumber ++;
    }
  }
  closedir ( $open );

  for ($i = 0;$i<count($arrayName);$i++){ 
    if ($i == 0) { 
      echo "\"" . $arrayName[$i] . "\""; 
    }else{ 
      echo ",\"" . $arrayName[$i] . "\""; 
    } 
  } 
}

编辑01

工作版:

scripts.js中:

var imgArrayThumbs = new Array();   
$.ajaxSetup({async:false});
$.ajax({
  type: 'POST',
  url: 'work.php',
  data: { task: "imgArrayThumbs" },
  success: function(data) {
    imgArrayThumbs = data;
  },
  dataType: 'json'
});

的functions.php:

echo json_encode($arrayName); // without loop

1 个答案:

答案 0 :(得分:0)

alert()执行toString()。由于jQuery代码返回一个对象,alert仅打印类类型[object Object]。相反,使用类似Firebug或IE和Chrome的内置开发人员工具,并执行imgArrayThumbs = data; console.log(imgArrayThumbs)然后检查控制台是否要浏览对象的内容。

此外,jQuery默认需要JSON结果,但是您的PHP代码并没有用正确的JSON格式化它。使用JSON编码的更简单的解决方案是删除最后的for循环,然后使用echo json_encode($arrayName);

相关问题