私は2つのjsファイルを持っています。1つはroute.js
、2つ目はxml.js
です。ファイルで、route.js
にある関数を呼び出していますxml.js
。その関数が行うことは、xml リンクを解析して xml オブジェクトを返すことです。xml.jsconsole.log($(xml))
内で実行すると xml が表示されますが、このオブジェクトを返してconsole.log(Xml.init(param, param, param))
内部で実行route.js
すると が返されますundefined
。なぜ?
これが私のコードです
route.js
var Route = {
fromurl : null,
tourl : null,
from : null,
to : null,
init: function (fromaddress, toaddress) {
from = fromaddress;
to = toaddress;
fromurl = 'http://example.com/url=' + fromurl;
tourl = 'http://example.com/url=' + tourl;
Route.searchRoute();
},
searchRoute: function () {
console.log(Xml.init(from, to, fromurl)); // <---- this returns undefined why
}
};
xml.js
var Xml = {
to : null,
from : null,
url : null,
init: function (fromaddress, toaddress, link) {
from = fromaddress;
to = toaddress;
url = link;
this.requestXml();
},
requestXml: function () {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: this.parseXml
});
},
parseXml: function (xml) {
console.log($(xml)); //<--- works absolutely fine here
return $(xml);
}
};
アップデート
Xmlオブジェクトも次のように変更しました。ここでは、プラグインを使用して文字列に変換xml
していますが、まだ未定義が返されます。どうすればこの問題を解決できますか?string
json
[xmltojson][1]
var Xml = {
to : null,
from : null,
url : null,
requestXml: function (fromaddress, toaddress, link) {
from = fromaddress;
to = toaddress;
url = link;
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: function (xml) {
var xmltostring = Xml.xmlToString(xml),
stringtojson = Xml.stringxmlToJson(xmltostring);
return stringtojson;
}
});
},
xmlToString: function (xmlData) {
var xmlString;
if (window.ActiveXObject) {
xmlString = xmlData.xml;
} else {
xmlString = (new XMLSerializer()).serializeToString(xmlData);
}
return xmlString;
},
stringxmlToJson: function (stringxml) {
return $.xml2json(stringxml);
}
};