Javascript:从我的ajax函数返回值

时间:2012-03-08 23:43:18

标签: javascript ajax xmlhttprequest

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()没有将任何内容返回到变量中,导致我得到以下错误。

未捕获的TypeError:无法调用未定义的方法'split' 灯箱 (匿名函数)

任何帮助都会受到极大的赞赏。

1 个答案:

答案 0 :(得分:1)

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

相关问题