Javascript 如何获取jquery post返回值?

Javascript 如何获取jquery post返回值?,javascript,ajax,jquery,Javascript,Ajax,Jquery,我想通过使用对php文件的ajax post调用来检索服务器上图像的高度和宽度,该调用返回一个双管道分隔字符串“width | | height” 我的javascript正确地警告了php文件中请求的字符串,因此信息现在在我的脚本中,但我似乎无法在$.post函数之外访问它 这项工作: var getImagesize = function(sFilename) { $.post("getImagesize.php", { filename: sFilename, time:

我想通过使用对php文件的ajax post调用来检索服务器上图像的高度和宽度,该调用返回一个双管道分隔字符串“width | | height”

我的javascript正确地警告了php文件中请求的字符串,因此信息现在在我的脚本中,但我似乎无法在$.post函数之外访问它

这项工作:

  var getImagesize = function(sFilename)
  {
    $.post("getImagesize.php", { filename: sFilename, time: "2pm" },
    function(data){ 
      alert(data.split('||'));          
    });
  }
但检索是另一回事:

// this line calls the function in a loop through images:

var aOrgdimensions = getImagesize($(this, x).attr('src')) ;
alert(aOrgdimension);

// the called function now looks like this:
      var getImagesize = function(sFilename)
      {
        var aImagedims = new Array();
        $.post("getImagesize.php", { filename: sFilename },
        function(data){ 
          aImagedims = data.split('||');          
        });
        return "here it is" + aImagedims ;
      }

有人能告诉我我做错了什么吗?

你误解了AJAX调用的工作方式。AJAX中的第一个“A”代表异步,这意味着请求独立于正在运行的代码线程。这就是为什么在AJAX中回调如此之大的原因,因为在完成某件事情之前,您不知道什么时候该做什么。与此同时,您的代码仍在继续

在代码中,您试图分配一个变量,
aOrgdimensions
一个直到请求完成后才知道的值。有两种解决方案:

  • 修改逻辑以协调回调的概念,并在请求完成后执行操作

  • 不如让您的请求同步。这意味着代码和页面将在请求点“挂起”,并且仅在请求结束后继续。这是通过在jQuery选项中添加
    async:false
    来实现的


  • Thanx用于异步解释。我没有意识到这一点,但至少现在我知道为什么我的VAR不可用了

    编辑:算出了。按照建议使用回调函数,一切正常:D