jqGrid не загружает данные при публикации сайта на сервере - PullRequest
1 голос
/ 13 августа 2011

У меня проблема с моим jqGrid.Я видел другие посты здесь с похожей проблемой, за исключением того, что моя особенность заключается в том, что данные загружаются правильно на моей машине разработки, но когда я публикую сайт на моем производственном сервере, jqGrid не будет загружать данные, все, что я получаю, этопустая сетка.Любой другой ajax-запрос данных на сервере работает нормально, за исключением jqGrid.Мой проект в MVC3, и я размещаю сайт в win2008 IIS7.Это мой текущий код:

Вид:

<script type="text/javascript">
$(document).ready(function () {
    $("#grid").jqGrid({
        url: '@Url.Action("LoadAction", "Controller", new { area = "Area" })',
        editurl: '@Url.Action("SaveAction", "Controller", new { area = "Area" })',
        datatype: 'json',
        mtype: 'POST',
        colNames: [
            '@Html.LabelFor(v => new foo.bar.MyClass().Property1)',
            '@Html.LabelFor(v => new foo.bar.MyClass().Property2)',
            '@Html.LabelFor(v => new foo.bar.MyClass().Property3)',
            '@Html.LabelFor(v => new foo.bar.MyClass().Property4)'
        ], 
        colModel: [
            { name: 'Property1', index: 'Property1', editable: true },
            { name: 'Property2', index: 'Property2', editable: true, edittype: "select", editoptions: { value: "Option1:Option1;Option2:Option2"} },
            { name: 'Property3', index: 'Property3', editable: true },
            { name: 'Property4', index: 'Property4', editable: true }
        ],
        pager: $('#gridPager'),
        rowNum: 20,
        rowList: [10, 20, 50, 100],
        sortname: 'Property1',
        sortorder: "asc",
        viewrecords: true,
        imgpath: '',
        shrinkToFit: true,
        width: 940,
        height: 300,
        gridview: true
    });
});
</script>
<div>
    <table id="grid" class="scroll" cellpadding="0" cellspacing="0"></table>
    <div id="gridPager" class="scroll" style="text-align:center;"></div>
</div>

Контроллер:

[Authorize]
public JsonResult LoadAction(string sidx, string sord, int page, int rows)
{
    List<foo.bar.MyClass> list = foo.bar.MyClassController.getAll();

    int pageIndex = Convert.ToInt32(page) - 1;
    int pageSize = rows;
    int totalRecords = list.Count();
    int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

    var jsonData = new
    {
        total = totalPages,
        page,
        records = totalRecords,
        rows = (
            from myclass in list
            select new
            {
                id = myclass.Id,
                cell = new string[] { 
                    myclass.Property1, 
                    myclass.Property2, 
                    myclass.Property3, 
                    myclass.Property4
                }
            }).ToArray()
    };
    return Json(jsonData);
}

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 августа 2011

1) Я рекомендую вам включить обработчик событий loadError в определение jqGrid. В пути вы увидите сообщения об ошибках от сервера. См. ОБНОВЛЕННАЯ часть ответа . Вы можете загрузить соответствующий демонстрационный проект из здесь .

2) Необходимо проверить конфигурацию виртуального каталога, в котором вы публикуете сайт. Вы используете [Authorize] атрибут. Поэтому следует явно отключить «Анонимную аутентификацию» и включить «Аутентификацию Windows», «Аутентификацию по форме» или другую Аутентификацию, которую вы планируете использовать.

1 голос
/ 13 августа 2011

Причин может быть несколько, в основном настройки IIS веб-сервера - я могу предположить, что обычно это настройки безопасности, поэтому вам лучше отладить их, чтобы выяснить настоящую причину.Можете ли вы использовать firebug в firefox и найти реальное сообщение об ошибке, когда сервер отвечает на запрос?(Firebug -> Консоль -> соответствующий элемент -> Ответ) вы можете начать с этого.

Я бы попробовал удалить атрибут Authorize и посмотреть, работает ли он.

OK в соответствиик вашему результату отладки, это означает, что у вашего маршрута была проблема.И я думаю, что нашел причину.

 public JsonResult LoadAction(string sidx, string sord, int page, int rows)

Но ваш Url.ActionLink равен

   '@Url.Action("LoadAction", "Controller", new { area = "Area" })',

Вы не передаете здесь свой параметр, так что это приводит к 500-й ошибке.Пожалуйста, исправьте это, и вы получите результат.

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