0

以下のコードを実行するbttn click eventdoesn't return a data for success method. 、コントローラーメソッドが実行され、出力として false (ブール値) が返されます。javascript コードからそのブール値を選択する必要があります。

なぜ機能しないのですか?

Javascript コードは次のとおりです。

 $('#btnClockInTime').off('click').on('click', function () {

                var isClockOutTimeCompleted = true;

                $.ajax({
                    url: "/Employees/IsClockOutTimeCompleted",
                    type: "GET",
                    dataType: "json",
                    cache: false,
                    data: { employeeId: employeeId },
                    success: function (data) {
                        if (!data) {
                            isClockOutTimeCompleted = data;
                        }
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert(xhr.status);
                        alert(thrownError);
                    }
                });

                return false;
            });

コントローラ アクション メソッドは次のとおりです。

 [HttpGet]
 public JsonResult IsClockOutTimeCompleted(Guid employeeId)
        {
            var clockingDate = Convert.ToDateTime(DateTime.Today);

            var isClockOutTimeCompleted = Repository.IsClockOutTimeCompleted(employeeId, clockingDate);

            return Json(isClockOutTimeCompleted, JsonRequestBehavior.AllowGet);
        }

リポジトリコードは次のとおりです。

public bool IsClockOutTimeCompleted(Guid employeeId, DateTime clockingDate)
        {
            var clockOutTime = (from c in Catalog.EmployeeClockInOutTimes
                                where (c.Employee.Id == employeeId && c.Created == clockingDate && c.ClockOut == null)
                                select c).FirstOrDefault();

            return clockOutTime == null;
        }

アップデート :

応答は次のとおりです。

ここに画像の説明を入力

更新 2:

画面 1 :

ここに画像の説明を入力

画面 2 :

ここに画像の説明を入力

画面 3 :

ここに画像の説明を入力

上の画像に示されているように、私のデバッグは成功の方法になりません。2 番目の画面 (でデバッグする場合error) の後、コントローラーに移動してデータを取得します。3番目の画面は、コントローラーから戻った後のステータスを示しています。

4

2 に答える 2

0

戻り値が単なるfalse文字列の場合、それがdata値になり、結果として次のようになると思いました。

if (!data) { // won't fire }

Darin が言うように、応答 Json をオブジェクト内にラップし、それを使用してisClockOutTimeCompleted変数に割り当てます。

戻り値が true/false の戻り値の型である場合、戻り値のブール値評価を実行したいとは思いませんでしたisClockOutTimeCompleted。いずれかの方法で割り当てたいと思いませんか?

于 2013-03-05T09:32:09.787 に答える