次のモジュールを実装するために 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 を使用しているためですか、それとも何か間違っていますか?