0

告白しますが、それは非常に基本的な質問です。しかし、私は実際にそれにうんざりしています。現在の時刻をアクション メソッドからビューに JSON 形式で送信しようとしています。ビュー コードでは、jQuery ajax() メソッドを使用して結果を取得しようとしています。しかし、成功属性では、応答から結果を取得できません。response.d などのさまざまな方法を試しましたが、ほとんど何もありませんでした。

関連するコード スニペットを次に示します。

アクション方法:

 public JsonResult GetDateTest()
        {
            return Json(DateTime.Now.ToString(), JsonRequestBehavior.AllowGet);
        }

ビュー内のスクリプト:

<script type="text/javascript">

    $(document).ready(function () {

        $("#Button1").click(function (e) {

            $.ajax({


                type: 'POST',

                url: '@Url.Action("GetDateTest","GetDate")',

                data: '{}',

                contentType: 'application/json; charset=utf-8',

                dataType: 'json',

                success: function (response) {

                    //how can I read the date here and display it on the standard //controls like a label?

                },

                error: function (e) {
                    alert("error");
                }

            });

        });

    });
</script>

適切な説明でそれを理解するのを手伝ってください

4

2 に答える 2

1

jQuery.ajax()から

dataType (デフォルト: Intelligent Guess (xml、json、script、または html))
タイプ: 文字列
サーバーから返されると予想されるデータのタイプ。
...
"json": レスポンスを JSON として評価し、JavaScript オブジェクトを返します。

したがって、あなたの場合、応答はすでに JSON として解析され、javascript 文字列として返されます。

データを渡さないので、デフォルトの GET メソッドを使用して、例を次のように減らすことができます。

$.ajax({
    url: '@Url.Action("GetDateTest","GetDate")',
    dataType: 'json',
    success: function (response) {
        console.log(response);
    },
    error: function (e) {
        alert("error");
    }
});

エラー コールバックが必要ない場合は、jQuery.getJSON()代わりに使用してさらに単純化できます。

$.getJSON('@Url.Action("GetDateTest","GetDate")',
          function (response) {
              console.log(response);
          });

コメントへの更新:

オブジェクトのプロパティにアクセスするには、JSON オブジェクトとしてエンコードする必要があります

{
    "id": 423,
    "name": "john doe",
    "salary": 50000
}

ajax 成功関数では、応答のプロパティとしてアクセスできます

success: function(data) {
    var id = data.id;
    var name = data.name;
    var salary = data.salary;
    // do something with data properties
}
于 2013-02-13T09:10:54.990 に答える
1

としてデータを取得する場合はjson、コントローラー アクションを変更します。

public JsonResult GetDateTest()
{
    return Json(new { date = DateTime.Now.ToString() }, JsonRequestBehavior.AllowGet);
}

成功関数を追加:

success: function (response) {
    $("#someLabel").html(response.date);
},

html

<div id="someLabel"></div>
于 2013-02-13T09:08:13.377 に答える