1

私は初めて Json を試していますが、ここで何が間違っているのかわかりませんが、成功のコールバックが呼び出されます。RIPreset というドロップダウンがあり、変更時に以下のコードを呼び出します。変更部分が適切に機能していることはわかっています。以下のコードでは、alert("popup1") コードが実行されます。コード ビハインドにもブレーク ポイントがあり、 getPreset メソッドが呼び出されて結果に文字列が渡されていることがわかりますが、 my 内の関数内には何もありません。 getJSON 呼び出し。つまり、alert("popup2") が呼び出されることはありません。これは、JsonResult から有効なデータを渡していないことを意味しますが、何が間違っているのかわかりません。どんな助けでも大歓迎です。

コードビハインド

    public JsonResult getPreset(int id)
    {
        RIPreset ripreset = db.RIPresets.Find(id);
        return Json(new { Description = ripreset.Description, LaborHours = ripreset.LaborHours, HourlyRate = ripreset.HourlyRate, Amount = ripreset.Amount });

    }

JQuery/Json

<script type="text/javascript">
$(document).ready(function () {
    $("#RIPreset").change(function () {

        var selection = $("#RIPreset").val();
        alert("popup1");
        $.getJSON('@Url.Action("getPreset")', { id: selection }, function (ripreset) {
            alert("popup2");
            $("#txtDescription").val(ripreset.Description);
            $("#txtHourlyRate").val(ripreset.HourlyRate);
            $("#txtLaborHours").val(ripreset.LaborHours);
            $("#txtAmount").val(ripreset.Amount);
        });
    });
});
</script> 
4

2 に答える 2

2

GETリクエストはセキュリティ上の理由からデフォルトで無効になっています。アクションを変更して、

public JsonResult getPreset(int id)
    {
        RIPreset ripreset = db.RIPresets.Find(id);
        return Json(new { Description = ripreset.Description, LaborHours = ripreset.LaborHours, HourlyRate = ripreset.HourlyRate, Amount = ripreset.Amount },
                    JsonRequestBehavior.AllowGet);

    }
于 2012-08-24T00:59:27.830 に答える
1

次のようにアクションを変更するだけです:

public JsonResult getPreset(int id)
{
    RIPreset ripreset = db.RIPresets.Find(id);
    return Json(new { Description = ripreset.Description, LaborHours = ripreset.LaborHours, HourlyRate = ripreset.HourlyRate, Amount = ripreset.Amount }, JsonRequestBehavior.AllowGet);
}
于 2012-08-24T00:53:36.030 に答える