簡體   English   中英

Javascript:從我的ajax函數返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM