JQuery AJAX MVC Возвращение непустого результата приводит к «Внутренней ошибке сервера» - PullRequest
0 голосов
/ 12 ноября 2011

У меня проблема с использованием AJAX в MVC3.Проблема в том, что я отлаживаю проект, вижу, что контроллер получает соответствующие переданные значения, я вижу, что запрос генерируется правильно и возвращает тот же результат, что и я, когда я тестирую его в 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 ]

1 голос
/ 12 ноября 2011

я думаю, что это должно работать

[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);

}
1 голос
/ 12 ноября 2011

Попробуйте изменить метод действия, чтобы он возвращал 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

1 голос
/ 12 ноября 2011

вместо этого попробуйте вернуть jsonresult http://msdn.microsoft.com/en-us/library/system.web.mvc.jsonresult.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...