我正在使用 AMD 和 Requirejs 来实现以下模块:
define({
callWeatherService: function(x, y){
//var url = 'http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=INR&ToCurrency=AUD'; // website you want to scrape
var url = 'http://www.webservicex.net/globalweather.asmx/GetWeather?CityName=' + x + '&CountryName=' + y;
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + url + '"') + '&format=json&callback=?';
$.getJSON(yql,displayData);
function displayData(data){
if(data.query.results){
result = data.query.results.string.content.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
document.getElementById("asmxResult").innerHTML = result;
// return result;
}
}
}
});
我不想修改这段代码中的 HTML 文档,而是返回结果。我已经尝试了许多不同的方法来从 stackoverflow 中提供的其他解决方案进行回调,但似乎没有一个有效。例如,以下代码在控制台上记录结果但返回未定义:
define({
callWeatherService: function(x, y){
var url = 'http://www.webservicex.net/globalweather.asmx/GetWeather?CityName=' + x + '&CountryName=' + y;
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + url + '"') + '&format=json&callback=?';
var result;
$(function() {
var r = GetResults();
result = r;
});
function GetResults() {
$.getJSON(yql,function(data){
if(data.query.results){
var output = data.query.results.string.content.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
}
console.log(output);
return output;
});
}
return result;
}
});
这是因为使用 AMD 和 Requirejs 还是我做错了什么?