如何获取jquery post返回值?

时间:2010-07-14 23:19:24

标签: javascript ajax jquery

我想通过使用对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 ;
      }

任何人都能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

在您的代码中,您尝试为变量aOrgdimensions分配一个在请求完成之前您将不会知道的值。有两种解决方案:

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

  2. 不太优选,让您的请求同步。这意味着代码和页面将在请求点“挂起”,并且只有在它结束时才会继续。这是通过将async: false添加到jQuery选项来完成的。

答案 1 :(得分:0)

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

编辑:想出来。使用了建议的回调函数,一切都很好。 :d