Javascript:从我的ajax函数返回值
我遇到的问题是,我的代码在图像变量中调用了ajaxFunction(),ajaxFunction()没有向该变量返回任何内容,导致我出现以下错误 未捕获的TypeError:无法调用未定义的方法“split” 灯箱 (匿名函数)Javascript:从我的ajax函数返回值,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,我遇到的问题是,我的代码在图像变量中调用了ajaxFunction(),ajaxFunction()没有向该变量返回任何内容,导致我出现以下错误 未捕获的TypeError:无法调用未定义的方法“split” 灯箱 (匿名函数) 任何帮助都将不胜感激 AJAX代表异步JavaScript和XML。这里的关键部分实际上是异步部分。这意味着,当您向服务器发送信息请求时,浏览器会在后台获取信息,而不会干扰现有页面的显示和行为。因此,当涉及AJAX时,回调是巨大的——您不知道您的服务器是否需要500毫秒
任何帮助都将不胜感激 AJAX代表
异步JavaScript和XML
。这里的关键部分实际上是异步部分。这意味着,当您向服务器发送信息请求时,浏览器会在后台获取信息,而不会干扰现有页面的显示和行为。因此,当涉及AJAX时,回调是巨大的——您不知道您的服务器是否需要500毫秒或3秒才能返回值,所以您真正能做的就是发送请求并说“完成后,我希望您这样做”。在您当前的代码中,在您尝试将值返回到函数之前,服务器很少有时间返回getpic.php
所做的任何事情。您只需修改代码,以便ajaxFunction
可以接受第二个参数,该参数是一个函数回调,然后在代码的onreadystatechange
部分中运行。AJAX代表异步JavaScript和XML
。这里的关键部分实际上是异步部分。这意味着,当您向服务器发送信息请求时,浏览器会在后台获取信息,而不会干扰现有页面的显示和行为。因此,当涉及AJAX时,回调是巨大的——您不知道您的服务器是否需要500毫秒或3秒才能返回值,所以您真正能做的就是发送请求并说“完成后,我希望您这样做”。在您当前的代码中,在您尝试将值返回到函数之前,服务器很少有时间返回getpic.php
所做的任何事情。你只需要修改你的代码,以便<代码> Ajax函数< /C>可以接受一个第二个参数,它是一个函数回调,然后运行在<代码> OnRead yStaseCudio代码的一部分。这是与“用正则表达式解析HTML”的标准,直到它被询问的频率。谢谢你的时间,非常感谢,现在你已经解释了,这完全是有道理的,因为我以前没有意识到这一点。谢谢你的时间,非常感谢,现在你已经解释了,这完全有道理,我在背后踢自己,因为我以前没有意识到这一点。英雄联盟
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;}
}