2012-03-08 40 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