如何让.getJson成功

时间:2012-08-24 00:41:01

标签: jquery json asp.net-mvc-3

我第一次尝试Json并且我不确定我在这里做错了什么,但我的成功回调永远被召唤。我有一个名为RIPreset的下拉列表,它在更改时调用下面的代码。我知道改变部分工作正常。在下面的代码中,我的警报(“popup1”)代码运行,我的代码后面也有一个断点,可以看到getPreset方法被调用并将字符串传递给结果,但我的函数内部没有任何内容。 getJSON调用。即,警报(“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> 

2 个答案:

答案 0 :(得分: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);

    }

答案 1 :(得分: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);
}