2012-03-08 76 views
1
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功能

遗漏的类型错误:无法调用未定义 收藏 (匿名函数)

任何帮助,将不胜感激的“分裂”。

+0

这是越来越与“解析HTML与正则表达式”尽可能多的频率它被问到......愚蠢的http://stackoverflow.com/questions/9286045/get-json-response-var - jQuery的外部功能,http://stackoverflow.com/questions/562412/return-value-from-function-with-an-ajax-call,还有更多。 – 2012-03-08 23:46:09

回答

1

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

+0

谢谢你的时间,我们非常感谢你,现在你已经解释了它,它是完全有道理的,我在背后踢自己,以前没有意识到这一点。大声笑 – 2012-03-09 00:00:35