【问题标题】:Javascript : returning value from my ajax functionJavascript:从我的 ajax 函数返回值
【发布时间】:2012-03-08 23:43:17
【问题描述】:
function ajaxFunction(id){
  var ajaxRequest;
  var response;
      try{
      // Opera 8.0+, Firefox, Safari
      ajaxRequest = new XMLHttpRequest();
      } catch (e){
      // Internet Explorer Browsers
      try{
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
      try{
      ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e){
      alert("Ajax Failed");
      return false;
    }
  }
}
ajaxRequest.onreadystatechange = function(){
  if(ajaxRequest.readyState == 4){
    response = ajaxRequest.responseText;
  }
}
ajaxRequest.open("GET", "http://priest/getpic.php?id="+id, true);
ajaxRequest.send(null);
return response;

}

function lightbox(id) {
var image;
var imageArr;
document.write(image);

image = ajaxFunction(id);
imageArr = image.split('|');

imageSrc = imageArr[0];
imageWidth = imageArr[1];
imageHeight = imageArr[2];

getElementById('lightbox').visibility=visible;
getElementById('lightboximg').src=imageSrc;

if(imageWidth > 700) {getElementById('lightboximg').width=700;}
if(imageHeight > 500) {getElemetnById('lightboximg').height=500;}


}

我遇到的问题是我的代码将 ajaxFunction() 调用到图像变量中,而 ajaxFunction() 没有将任何内容返回到变量中,导致我收到以下错误。

未捕获的类型错误:无法调用未定义的方法“拆分” 灯箱 (匿名函数)

任何帮助将不胜感激。

【问题讨论】:

标签: javascript ajax xmlhttprequest


【解决方案1】:

AJAX 代表Asynchronous JavaScript and XML。这里的关键部分实际上是 异步 部分。这意味着当您向服务器发送信息请求时,浏览器在后台获取信息,而不会干扰现有页面的显示和行为。正因为如此,当涉及到 AJAX 时,回调是巨大的——你不知道你的服务器是否需要 500 毫秒或 3 秒来返回值,所以你真正能做的就是发送请求并说“当你完成了,我要你做这个”。在您当前的代码中,在您尝试将值返回给函数之前,您的服务器很少有时间返回 getpic.php 所做的任何事情。您只需修改您的代码,以便 ajaxFunction 可以接受第二个参数,该参数是一个函数回调,然后在代码的 onreadystatechange 部分中运行。

【讨论】:

  • 感谢您的宝贵时间,非常感谢,现在您已经解释了它,这完全有道理,我因为之前没有意识到这一点而自责。大声笑
猜你喜欢
  • 2019-11-20
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 2017-10-27
  • 1970-01-01
相关资源
最近更新 更多