2010-08-09 118 views
1

請幫忙,我一直在看這一整天,我知道必須有一個簡單的修復!傳遞返回值

如何將結果返回給textService,以便我可以撥打電話,例如 textResult = textService(要傳入的文本);

我不想使用全局變量,如果我可以避免它。 這是代碼

function textService(text){ 
req.open("GET", "http://....?text="+text, true); 
req.onload = showResults; 
req.send(null); 
} 

function showResults() { 
results = req.responseXML.getElementsByTagName("Result"); 
} 

預先感謝您

回答

0

您可以使用這個

function showResults() { 
    results = this.responseXML.getElementsByTagName("Result"); 
} 
2
function textService(text){ 
    // set flag to false for sync requests 
    req.open("GET", "http://...?text="+text, false); 
    req.send(null); 
    // browser will be stalled till request is complete. 
    if(req.status == 200 && req.readyState == 4) { 
     return req.responseXML.getElementsByTagName("Result"); 
    } else { 
     return 'request failed'; 
    } 
} 
// javascript will stall till request is complete. 
var results = textService('someText'); 

注意,使得同步請求可能是有害的,如果請求失敗,它可能會無休止地拖延瀏覽器。不同步更好。

function textService(text, callback){ 
    // async is true by default, no need to pass 3rd param. 
    req.open("GET", "http://...?text="+text); 
    req.send(null); 
    req.onreadystatechange = function(){ 
     if(this.readyState == 4 || this.status == 200) { 
      callback(this.responseXML); 
     } 
    } 
} 
textService('someText', function(xml){ 
    // do stuff with XML. 
}); 

只需要你的編碼的頭腦切換到異步編程;)