2013-08-19 54 views
0

我想實現的是AJAX負載的客戶端數據到一個頁面(這個工程),然後我有一個公司的ID在一個領域帶來英寸我需要與不同的公司表(相同的數據庫)來替換頁面上的公司標識。AJAX和一個全局變量不起作用,我有這個錯誤嗎?

爲了得到這個我已經設置了一個全局的JavaScript變量爲空,然後解僱了主AJAX請求獲取所有的初始客戶端數據,然後在解析循環(客戶端)我需要啓動一個函數,公司的表名來獲得。我目前的問題是全局變量沒有被設置爲第二個AJAX結果。這裏是我的代碼:

var nameresult = ""; 

function namecheck(id){ 
var request = new Ajax().sendRequest 
    ('../company_check.php', 
     { method: 'GET', 
      parameters: 'id=' + id, 
      callback: namecheckReceived } 
    ); 
} 

function namecheckReceived(xmlHTTP){ 
     var n_data = JSON.parse(xmlHTTP.responseText); 
     nameresult = n_data[0].name; 
} 

function client_call(){ 
var request = new Ajax().sendRequest 
    ('../client_data.php', 
     { method: 'GET', 
      callback: searchReceived } 
    ); 
} 

function searchReceived(xmlHTTP){ 
     var data = JSON.parse(xmlHTTP.responseText); 
     for(var i=0; i<data.length; i++) 
      { 
       namecheck(data[i].company_id); 
      /////spit out all the data in a readable format ////// 
      } 
} 

注:

  1. 只有一個結果將從company_check.php因此沒有 環在namecheckRecieved()函數接收。
  2. JS控制檯沒有錯誤。
  3. 的nameresult變量保持爲空白,並且永遠不會 改變,如果我提醒(nameresult)的namecheckRecieved()內 功能它吐出來什麼,我想那麼,爲什麼不與searchRecieved的每個循環改變 全局變量()函數?
+0

阿賈克斯異步。如果您等待x秒(或者最好在成功回調中訪問它),您的變量將被填充。 –

+0

因此用公司ID號碼填充頁面,然後在連續回調中用名稱替換ID號碼? – Aaron

+0

不,把你的'/////把所有數據以可讀格式吐出來//////'成功回調,不要使'nameresult'全局。 –

回答

0

我將刪除我之前的所有評論,並說您只需要一個ajax調用。一切都應該在服務器端完成。這意味着獲得公司ID,並用它來獲取公司名稱,然後將所有內容都傳回客戶端。從它的外觀來看,你正在做一個LOT的回撥到服務器,以獲得每個公司的名稱,當你剛剛完成第一次訪問服務器時。這樣,您就不必擔心從它的外觀做了兩Ajax調用雖然你做的2級以上的呼叫,具體取決於數據

+0

@Aaron更新回答。 –

+0

nope同樣的問題,全局變量沒有被設置。 – Aaron

+0

@Aaron檢查我的回答,並告訴我它是否可行並且合理。或者如果我忘記了一些東西。 –

0

的長度試試這個
function namecheckReceived(xmlHTTP){ var n_data = JSON.parse(xmlHTTP.responseText); nameresult = n_data[0].name; client_call(); }