2010-07-14 105 views
0

我想檢索一個服務器上的圖像的高度和寬度通過使用ajax後調用一個PHP文件,它返回一個雙管道分隔字符串'寬度||高度'如何獲取jquery post返回值?

我的javascript正確警告請求字符串從PHP文件,所以信息現在在我的腳本,但我似乎無法訪問$ .post函數外。

這工作:

var getImagesize = function(sFilename) 
    { 
    $.post("getImagesize.php", { filename: sFilename, time: "2pm" }, 
    function(data){ 
     alert(data.split('||'));   
    }); 
    } 

但檢索是一個不同的問題:

// this line calls the function in a loop through images: 

var aOrgdimensions = getImagesize($(this, x).attr('src')) ; 
alert(aOrgdimension); 

// the called function now looks like this: 
     var getImagesize = function(sFilename) 
     { 
     var aImagedims = new Array(); 
     $.post("getImagesize.php", { filename: sFilename }, 
     function(data){ 
      aImagedims = data.split('||');   
     }); 
     return "here it is" + aImagedims ; 
     } 

任何人能告訴我什麼,我做錯了什麼?

回答

2

您誤解了AJAX調用的工作方式。 AJAX中的第一個「A」代表異步,這意味着請求獨立於正在運行的代碼線程。這就是回調對於AJAX來說如此之大的原因,因爲你不知道什麼時候完成了某些事情。與此同時,您的代碼繼續愉快地繼續。

在你的代碼中,你試圖分配一個變量,aOrgdimensions一個你不知道的值,直到請求完成。有兩種解決方案:

  1. 修改您的邏輯以調和回調的概念並在請求完成後執行您的操作。

  2. 不太好,讓您的請求同步。這意味着代碼和頁面將在請求點處「掛起」,並且只有在結束時才進行。這是通過將async: false添加到jQuery選項來完成的。

0

Thanx爲異步解釋。我沒有意識到,但至少現在我知道我的變數爲什麼不可用。

編輯:想出來。按照建議使用回調函數,一切正常。 :D