0

Angular という名前のコントローラー (AngularJS も使用しています) を備えた MVC アプリケーションがあり、GetQuestion というアクションがあります。そのアクションは、次のような JsonResult を返します (Chrome から取得):

{"game":{"Title":"Diablo III","ImgPaths":["d31.jpg","d32.jpg"]},"Answers":["Diablo III","World of Tanks","Need for Speed"]}

私のJS関数は次のようなものです:

var request = $.ajax({
    url: "/Angular/GetQuestion",
    dataType: "json",
    type: "post",
    success: (function (data) { alert(data); })
});

しかし、上で書いた Json の代わりに、アラート ウィンドウには [object Object] しか表示されません。

アップデート

わかりました、それは修正されました。ただし、ご想像のとおり、私の目標はこのデータをアラート ボックスに表示することではなく、何らかの方法で使用することです。これがAngularのコントローラーです

関数 QuestionCtrl($scope) {

var request = $.ajax({
    url: "/Angular/GetQuestion",
    dataType: "json",
    type: "post",
    success: function (data) {
        $scope.answers = JSON.stringify(data.Answers);
        $scope.imgPath = JSON.stringify(data.game.ImgPaths[0]);
    }
});

}

そしてビュー:

<div ng-controller="QuestionCtrl">

<img class="quizImage" src="~/Gallery/{{imgPath}}"/>
@using (Html.BeginForm("Answer", "Angular", FormMethod.Post))
{
    <p ng-repeat="answer in answers"><input type="radio" name="game"  value="{{answer}}"/> {{answer}}</p>
    <p><input type="submit" value="Answer"/></p>
}
</div>

そして、私にはイメージも質問もありません。コントローラーでそれらをハードコーディングすれば、問題ありません。

4

4 に答える 4

2

私は次のように2番目の問題を解決しました:

function QuestionCtrl($scope, $http) {

$http.post('/Angular/GetQuestion',null).success(function(data) {
    $scope.answers = data.Answers;
    $scope.imgPath = data.game.ImgPaths[0];
    //console.log($scope.answers);
    //console.log($scope.imgPath);
});

}

AngularJS であることに注意してください。

于 2013-07-03T15:00:52.827 に答える
2

アラートが表示されます。console.log(data) を使用することをお勧めします。

var request = $.ajax({
url: "/Angular/GetQuestion",
dataType: "json",
type: "post",
success: (function (data) { console.log(data); })
 });

またはコメントが述べているように:

var request = $.ajax({
url: "/Angular/GetQuestion",
dataType: "json",
type: "post",
success: (function (data) { alert(JSON.stringify(data)); })
 });
于 2013-07-03T13:27:39.610 に答える
1

手始めに...画像のsrc URLを動的に構築するときはいつでも(Angularの{{expression}}構文を使用して)、「src」属性を使用せず、「ng-src」角度ディレクティブを使用する必要があります。画像が読み込まれる前に、URL を処理するための時間の角度が許されます。

于 2013-07-03T15:01:18.370 に答える
1

これが発生する理由は、JSON が JavaScript のオブジェクトであるためです。入力するとき

alert(data);

オブジェクトを文字列にキャストしようとしますが、この場合、それがオブジェクトであるという事実のみを出力します。

オブジェクトの内容を表示するには、アラートまたは console.log で使用する単純な関数を記述できます。

function outputProperties(anObject) {
    var props = '';
    for (var prop in anObject) {
        props += '\n' + prop + ' value: ' + anObject[prop];
    }
    return props;
}

そして、このように使用します

alert(outputProperties(data));
于 2013-07-03T13:36:43.027 に答える