返回Json提示我下载Json而不是将其提供给控制器

时间:2011-07-29 22:07:36

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

我不明白为什么会这样...一小时前我的行为的返回值将Json数据返回到我的视图并且它正在更新我的ListBox就好......我不知道是什么在地球上发生了...但突然间它只是促使我下载数据......我知道我做了什么,事实上我没有做任何事......我一定做了些什么但是,因为它不再工作!很沮丧......

这是我的视图和Jquery函数......

    [HttpPost]
    public ActionResult SearchByDemographic1(FormCollection formCollection)
    {

        SLI.Text = patient.name[0].lastName + ", " + patient.name[0].firstName + " | " + patient.address[0].street1 + " | " + patient.address[0].city + " | " + patient.address[0].country;
                SLI.Value = patient.compositeID[0].id + "";
                patientList.Add(SLI);
        }
        ViewData["PatientListToAdd"] = patientList;
        //ViewData["POPID"] = PopID;

        return Json(patientList, JsonRequestBehavior.AllowGet);        
    }



    $(function () {
    $("#DemoGraphSubmit").click(function (e) {
        e.preventDefault();
        var form = $("#DemoGraphID");
        var srlzdform = form.serialize();
        var PopID = <% =PopID %>
        var options = [];
        var serializedForm = form.serialize();
        $.post("/PatientACO/SearchByDemographic", formCollection:srlzdform, function (data) {
            options = $.map(data, function (item, i) {
                return "<option value=" + item.Value + ">" + item.Text + "</option>";
            });
            $("#PatientListToAdd").html(options.join(""));
        });
    });
});

1 个答案:

答案 0 :(得分:2)

我相信您在JavaScript(检查FireBug)中出现错误导致您的click事件失败,正常提交表单(并返回JSON响应,而不是调用您的回调函数)。

改变这个:

$.post("/PatientACO/SearchByDemographic", formCollection:srlzdform, function (data) {
    options = $.map(data, function (item, i) {
        return "<option value=" + item.Value + ">" + item.Text + "</option>";
    });
    $("#PatientListToAdd").html(options.join(""));
});

对此:

$.post("/PatientACO/SearchByDemographic", srlzdform, function (data) {
    options = $.map(data, function (item, i) {
        return "<option value=" + item.Value + ">" + item.Text + "</option>";
    });
    $("#PatientListToAdd").html(options.join(""));
});

违规代码为formCollection:srlzdform。这不是有效的JavaScript表达式,会导致错误。你的意思可能是{ formCollection:srlzdform },但我并不认为是必要的。模型绑定器应该能够弄明白。