2013-01-10 24 views
0

我正在使用IUI框架並嘗試從ajax調用中獲取結果。無法從ajax調用中獲取responseText XrayWrapper

在firebug中查看,調用返回一個「XrayWrapper [Object XMLHttpRequest {}」,但是我無法從對象中提取responseText。

當Firebug的擴展,這個responseText被列爲一個屬性,但它是在一個淺灰色文本使用get前綴:「得到responseText的」

var data = iui.ajax('login.php',{'userName':'sysadm','password':'sysadm'},'POST',null,xxxx(data)) 
    console.log(data.responseText); 

我已經嘗試了許多不同的方法,包括data.get .responseText,data.get('responseText')等等,但仍然無法抓住響應。

任何想法爲什麼?

+0

其中是回調ajax是異步 –

回答

1

AJAX調用是異步的,這意味着它會觸發AJAX請求並立即將data記錄到控制檯。此時,AJAX調用尚未完成。我不熟悉你使用的框架,但你需要使用一個只在異步請求完成後執行的回調函數。

讀取IUI文檔here,似乎第四個參數是回調函數。所以你需要這樣做:

iui.ajax('login.php',{ 
     'userName':'sysadm', 
     'password':'sysadm' 
    },'POST', function(data) { 
     // callback function. Only executes after ajax request completes 
     console.log(data); 
    } 
); 

PS - 此外,你有一個額外的參數。該文檔僅顯示url,params,methodcallback四個參數。

+0

@arun killu - 謝謝,我可以使用console.log(data)轉儲整個對象,但我只查找responseText屬性而不是所有其他請求變量。 – crankshaft

+0

如果你只關心responseText,那麼只記錄該屬性:'console.log(data.responseText);'。它不會像你這樣做,因爲'responseText'只會在回調中填充。 – xbonez

+0

謝謝,沒錯,data.responseText在回調函數中調用時非常有效,非常感謝:-) – crankshaft