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