传递返回值

时间:2010-08-09 18:57:28

标签: javascript

请帮助,我一整天都在看这个,我知道必须有一个简单的解决办法!

如何将结果传递回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");
}

提前谢谢

2 个答案:

答案 0 :(得分: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.
});

只需要将编码思想转换为异步编程;)

答案 1 :(得分:0)

您可以使用

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