JSON не проходит через контроллер - PullRequest
0 голосов
/ 13 декабря 2011

Я работаю с плагином jQuery fullcalendar и mvc3.

JQuery:

$(document).ready(function () {

    var calendar = $('#calendar').fullCalendar({
        header: {
            left: 'prev, next, today',
            center: 'title',
            right: 'month, agendaWeek, agendaDay'
        },
        events: 'CalendarView/GetEvents/'
    });
});

Контроллер (он не входит в эту функцию):

public JsonResult GetEvents(double start, double end)
    {
        var DateStart = ConvertFromUnixTimestamp(start);
        var DateEnd = ConvertFromUnixTimestamp(end);
        var JsonRfc = Repo.getCalendar(DateStart, DateEnd);
        var ret = JsonRfc.ToArray();
        return Json(ret, JsonRequestBehavior.AllowGet);
    }

Код внутри контроллера никогда не выполняется. У кого-нибудь есть понимание, почему?

Спасибо.

Ответы [ 6 ]

1 голос
/ 13 декабря 2011

Убедитесь, что путь к вашему контроллеру / действию правильный. В зависимости от того, как установлено ваше приложение, оно может быть или не быть правильным. Пока ваш javascript-код находится внутри одного из ваших представлений, вы можете попробовать использовать

events: '@Url.Action("GetEvents","CalendarView")' 

Вы определенно должны, как предложил @ Phil.Wheeler, более внимательно посмотреть на то, что появится в Firebug / Инструменты разработчика IE / Инструменты разработчика Chrome. (или попробуйте http://www.fiddler2.com/fiddler2/, если вы хотите что-то вне вашего браузера)

Другой способ, которым вы можете попробовать - сначала получить объект JSON с помощью

$.getJSON('CalendarView/GetEvents/', function(data) {

    var calendar = $('#calendar').fullCalendar({
        header: {
            left: 'prev, next, today',
            center: 'title',
            right: 'month, agendaWeek, agendaDay'
        },
        events: data
    });
}
1 голос
/ 13 декабря 2011

Ваш JsonResult ожидает два параметра для начала и конца, которые, по-видимому, не передаются вашим методом Ajax.

Рассматривали ли вы установку Glimpse или проверку того, какие коды возвращаются в Firebug?Это может дать вам более глубокое представление о поведении вашего реального веб-трафика.

0 голосов
/ 05 июля 2014

У меня была такая же проблема, как и у вас.Используя Firebug, я понял, что вызов на самом деле имеет следующий вид: GetEvents? Start = 2014-06-29 & end = 2014-08-10 & _ = 1404512824620, что означает, что начало и конец не являются двойными.Изменение GetEvents так, чтобы начало и конец были окончательно работающими строками.Затем вы можете преобразовать строку в соответствующий формат.

0 голосов
/ 14 апреля 2012

Используя Fiddler, я обнаружил, что моя проблема заключалась в том, что у моего метода не было правильных имен переменных 'start' и 'end'.Это и стало причиной ошибки моего сервера 500.

0 голосов
/ 13 декабря 2011

$. Ajax всегда работает для меня:

    $.ajax({
        type:"GET",
        url: "/CalendarView/Events",
        data: {start:"", end:""},
        datatype: "json"
        success: function (result) {
            var calendar = $("#Calendar").fullCalendar({
                //define calendar for result.objectreturned
            });       
        },
        error: function () {
            alert("error");
        },  
    });

Также ваш контроллер может быть изменен на:

    var ret = JsonRfc.ToList();

Это должно работать на 100%.

0 голосов
/ 13 декабря 2011

Как предложил Фил Уихлер, используйте отладчик браузера, чтобы выяснить, что происходит, хотя я могу сказать следующее:

Если вы получаете ошибку сервера 500, скорее всего, требования к функциям не выполняютсядля выполнения (при условии, что вы действительно нажимаете правильный URL для контроллера).

Кроме того, ваш метод должен быть украшен [HttpPost]

[HttpPost]
public JsonResult GetEvents(double start, double end)

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