[英]Javascript : returning value from my ajax function
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()沒有將任何內容返回到變量中,導致我得到以下錯誤。
Uncaught TypeError:無法調用未定義燈箱的方法“ split”(匿名函數)
任何幫助將不勝感激。
AJAX代表Asynchronous JavaScript and XML
。 這里的關鍵部分實際上是異步部分。 這意味着當您向服務器發送信息請求時,瀏覽器將在后台獲取信息,而不會干擾現有頁面的顯示和行為。 因此,涉及到AJAX時,回調非常大-您不知道服務器是否需要500ms或3s的時間來返回值,因此,您真正能做的就是發送請求並說“完成后,我希望您執行此操作 。 在您嘗試將值返回給函數之前,在您當前的代碼中,服務器很少有時間返回getpic.php
所做的任何getpic.php
。 您只需要修改代碼,以便ajaxFunction
可以接受第二個參數,該參數是函數回調,然后在代碼的onreadystatechange
部分內運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.