0

$http の Angular の transformResponse の側面を使用して、XML データを JSON に変換しようとしています。結果のオブジェクトは null で、その理由がわかりません。

サービス内にある $http リクエストは次のとおりです。

myApp.service('dataSource', function ($http) { // gets the XML data, turns it into JSON
this.getData = function(callback) {
    $http.get('http://localhost:1337/testXML.xml', {transformResponse: function (data) {
        var json = x2js.xml_str2json(data);
        return json;
        }
    }
    ).
    success(function (data) {
        callback(data);
    }).
    error (function () {
        alert("HTTP error.");
    });
}
});

コールバック関数は、別のファイルにあるコントローラーで定義されます。コードは次のとおりです。

// callback function
setData = function(data) {
    $scope.dataJSON = data;
}

dataSource.getData(setData);

したがって、$http への呼び出しによって返される変数 'json' は未定義です。複数の異なるトランスフォーマーを試しましたが、成功しませんでした。誰でも私の問題を見つけることができますか?

ありがとう!

4

2 に答える 2

0

あなたのコードは問題ないようです。戻り行の前に console.log(json) を追加するか、デバッガー (Chrome Dev Tools/Firefox) を使用して、戻り行と成功関数内にブレークポイントを設定することにより、json を検査して、得られるものを確認します。json と data をウォッチ変数としてデバッガーに追加すると、各行をたどって値を調べることができます。

データは問題ないとおっしゃいましたが、x2js は堅牢なライブラリなので、成功のコールバック関数に到達すると、json も問題ないと思います。デバッガーをステップ実行して、ある値から別の値に渡される値を検査するだけです。これは非同期であるため、成功関数にブレークポイントを設定する必要があります。

検査すると、データが実際には問題がないことがわかり、それが下流の問題の原因となっている可能性があります。

于 2014-03-18T15:01:56.553 に答える