JQuery AJAX MVC返回非空结果会导致“内部服务器错误”

时间:2011-11-11 22:13:13

标签: asp.net-mvc-3 jquery

我在MVC3中使用AJAX时遇到问题。问题是当我正在调试项目时,我看到控制器正在获取传入的适当值,我看到查询正在正确生成并且返回与我在LINQPad中测试时得到的结果相同。当查询返回空结果集时,我不会收到任何错误。但是,当结果集中有数据时,我会收到“内部服务器错误”。似乎问题在于将JSON结果从控制器传递给视图。

我有以下代码。

控制器代码

[HttpPost]
public ActionResult Load(int value1, int value2, int value3)
{
    var db = new MyDataContext();
    List<Foo> items = new List<Foo>();
    items = db.Foos.Where(f => f.v1 == value1 && f.v2 == value2 && f.v3 == value3).Take(50).ToList();
    var results = Json(items, JsonRequestBehavior.AllowGet);
    return results;
}

JQuery / Javascript代码

function Load() {
    var v1 = 3;
    var v2 = 2;
    var v3 = 1;

    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: '/FooBar/Load',
        data: { value1: v1, value2: v2, value3: v3 },
        error: function (xhr, status, error) {
            alert('Error loading: "' + error + '"');
        },
        success: function (jsonresults) {

        }
    });
}

如果有人可以再看看,我会非常感激。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我认为这应该有用

[HttpPost]
public ActionResult Load(int value1, int value2, int value3)
{
    var db = new MyDataContext();
    List<Foo> items = new List<Foo>();
    items = db.Foos.Where(f => f.v1 == value1 && f.v2 == value2 && f.v3 == value3).Take(50).ToList();

    return Json(items);

}

答案 2 :(得分:1)

尝试更改操作方法以返回JsonResult而不是ActionResult。这是我唯一能看到你做错的事情,因为我做的几乎是同样的事情并且按预期工作,但我的控制器方法返回一个JsonResult。

此外,请查看此链接,因为它可能有用,也可能没用。几天前它救了我的屁股:

http://blog.janjonas.net/2011-08-07/asp_net-mvc_3-jquery-ajax-submit-ajax-form-supporting-unobtrusive-client-side-validation-and-server-side-validation

相关问题