4

Jquery ajax から MVC コントローラー メソッドを呼び出しています。

$(document).ready(function () {
        $.ajax({
            type: "POST",
            url: "/Customer/GetDetails",
            contentType: "application/json; charset=utf-8",
            async: false,
            cache: false,
            success: function (data) {
                $.each(data, function (index, value) {
                    alert(value);
                });
            }
        });
    });

Customerというエンティティがあります。

コントローラー メソッドは、DB からレコードをフェッチし、顧客のリストとして保存し、そのリストを JsonResult 型で返します。

public JsonResult GetDetails()
{
    CustomerDAL customer = new CustomerDAL();
    IList<Customer> custList = customer.GetDetail();
    return Json(custList);
}

しかし、私の ajax の成功関数はここではまったく呼び出されません。

4

5 に答える 5

5

サーバーがデータを期待するタイプを設定するため、を指定するcontent-type必要はありません。送信しないため、明示的に設定する必要はありません。次に、クライアントがデータを期待する形式であるをに設定dataTypeしますjsonサーバーから。しかし、それがエラーの原因になる可能性があるとは思えません。

エラー コールバックを追加して、次のように戻る途中で何か問題が発生したことを確認します。

試す

$.ajax({
            type: "POST",
            url: "/Customer/GetDetails",
            dataType:'json',
            async: false,//WHY??
            cache: false,
            success: function (data) {
                 alert("success");                
            },
            error:function(){
              alert("something went wrong");
            }
        });

使用する

  1. ajax リクエストを調べ、返されるステータス コードを設定するための Firebug または chrome ツール。

  2. Controller 内にブレークポイントを配置してActionResult、呼び出しが行われたときに がヒットするかどうかを確認します。

編集

HttpPost次のような注釈で JsonResult をマークします

[HttpPost]
public JsonResult GetDetails()
        {
            CustomerDAL customer = new CustomerDAL();
            IList<Customer> custList = customer.GetDetail();
            return Json(custList);
        }
于 2013-02-28T06:41:42.933 に答える
1

回線を交換する

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

これで

contentType: "application/json",

データ型を追加します

datatype: 'json'
于 2013-02-28T06:45:41.937 に答える
0

ajax-success 関数の List としてオブジェクト リストがあります。

それを解析するには、これを試してください

$(document).ready(function () {
    $.ajax({
        type: "POST",
        url: "/Customer/GetDetails", // or better way '@Url.Action("GetDetails", "Customer")'
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            $.each(data, function (index, customer) {
                alert(customer.id, customer.name, customer.surname);
            });
        }
    });
});

コントローラ

public JsonResult GetDetails()
{
    CustomerDAL customer = new CustomerDAL();
    IList<Customer> custList = customer.GetDetail();

    return Json(custList);
}

たとえば、CustomerDAL モデルが

class CustomerDAL
{ 
    public int id { get; set; }
    public string name { get; set; }
    public string surname { get; set; }
}

CustomerDAL モデルのアラート メッセージを変更します。モデルのプロパティがわかりません。

于 2013-02-28T07:34:38.930 に答える
-1

あなたのコード:

return Json(custList);

次のように変更します。

return Json(new SelectList(custList));
于 2015-01-31T06:51:42.113 に答える