gpt4 book ai didi

javascript - 如何获取jquery post返回值?

转载 作者:行者123 更新时间:2023-12-02 20:36:00 24 4
gpt4 key购买 nike

我想通过使用对 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 分配一个在请求完成之前您不会知道的值。对此有两种解决方案:

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

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

关于javascript - 如何获取jquery post返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3251300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com