请帮助,我一整天都在看这个,我知道必须有一个简单的解决办法!
如何将结果传递回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 :(得分: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");
}