0

hi iveは、MVCでajaxを使用して簡単な検索を行っています。ajaxはajax呼び出しでコントローラーと通信できるため、このエラーに少し戸惑いますが、コントローラーがJSに値を返すと、エラー500が発生します。

これが私のコードです:

$.ajax({
        type: "GET",
        url: 'SearchCustomer',
        data: { 'name': name, 'id': customerId },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            alert(data);
            $(data).each(function () {

            });
        }
    });

それから私のコントローラー

 public JsonResult SearchCustomer(string name, string id)
        {

            var customers = tr.SearchCustomers(name, id);
            return new JsonResult() { Data = customers, JsonRequestBehavior = JsonRequestBehavior.AllowGet };

        }

-この質問をする前にすでに多くの解決策に行ったことがありますが、驚くべきことにどれもうまくいきませんでした。:P歓声

4

1 に答える 1

1

contentTypeJSON を送信していないため、設定を削除する必要があります。また、コントローラー アクションへの URL が有効に見えません。デフォルトのルーティングを使用している場合、通常は のようになります{controller}/{action}。Url ヘルパーを使用して生成することをお勧めします。

また、コントローラーのアクションでは、Dataプロパティを使用して結果を送信したため、成功のコールバックで使用してループする必要があります。

$.ajax({
    url: '@Url.Action("SearchCustomer")',
    type: 'GET',
    data: { 'name': name, 'id': customerId },
    success: function (result) {
        $(result.Data).each(function () {

        });
    }
});

探す必要があるもう 1 つのことは、コントローラー アクションからビューに送信するモデルです。

var customers = tr.SearchCustomers(name, id);

この顧客コレクションの型が何であるかは明確ではありませんが、JSON シリアライズ可能であることを確認する必要があります。これは、Customerモデルにオブジェクト グラフ内の循環参照を含めてはならないことを意味します。その場合は、理想的にはビュー モデルを使用して必要なプロパティのみをビューに送信することにより、それらを除外する必要があります。

于 2013-03-16T18:07:32.983 に答える