jqGrid прекратил загрузку данных json в Archlinux - PullRequest
0 голосов
/ 20 апреля 2011

Вчера все работало нормально.Теперь сетка пуста.(Я сделал обновление ночью.) Но если я попробую с машины Windows XP, IE и FF4 загрузят сетку просто отлично.Все работает.

Но из linux (archlinux 64 bit) ни FF4, ни Chromium не загружают данные.Сетка пуста.

Очевидно, проблема не в моем коде.Работает нормально.Что-то случилось с FF (и Chromium?)

Кто-нибудь еще имеет эту проблему?

Вот код:

$(document).ready(function(){var lastsel,tbl=$("#tblPrintSets");
   tbl.jqGrid({url:"http://192.168.1.147:3000/json/print-sets",
               editurl:"http://192.168.1.147:3000/print-sets/post",
               datatype:"json",height:400,
               jsonReader:{repeatitems:false,id:"set_id"},
               colNames:["ID","Seq #","Set name","File Name","Group Level","Exclude Attachments"],
               colModel:[{name:'set_id',sortable:false,editable:false,width:40},
                         {name:'seq_no',sortable:false,editable:true,width:50,editoptions:{size:4},editrules:{required:true,number:true}},
                         {name:'set_name',sortable:false,editable:true,width:200,editoptions:{size:25},editrules:{required:true}},
                      {name:'file_name',sortable:false,editable:true,width:200,editoptions:{size:25},editrules:{required:true}},
                    {name:'group_level',sortable:false,editable:true,width:100,edittype:"select",editoptions:{value:"1:Order;2:Service List;3:Location"}},
              {name:'exclude_attachments',sortable:false,editable:true,edittype:"select",editoptions:{value:"1:Yes;0:No",defaultValue:"No"}}],
            onSelectRow:function(id){if(id&&id!==lastsel){tbl.jqGrid('restoreRow',lastsel);
                    tbl.jqGrid('editRow',id,true);lastsel=id}}});

     $("#btnNewSet").click(function(){tbl.jqGrid('editGridRow',"new",{height:200,closeAfterAdd:true,recreateForm:true})})})

и вот данные json:

{"rows":[{"exclude_attachments":"No","file_name":"inhouse","group_level":"Location","seq_no":"1","set_id":"1","set_name":"In House"},
     {"exclude_attachments":"No","file_name":"client","group_level":"Order","seq_no":"2","set_id":"2","set_name":"Client Set"},
       {"exclude_attachments":"No","file_name":"oc","group_level":"Service List","seq_no":"3","set_id":"3","set_name":"O.C. Set"},
       {"exclude_attachments":"No","file_name":"service","group_level":"Service List","seq_no":"4","set_id":"4","set_name":"Service List Set"}]}

jqgrid версия: 4.0

jquery: 1.5.2

jquery-ui: 1.8.11

РЕДАКТИРОВАТЬ: Благодаря помощи Олега, проблемарешеноОказалось, что я использовал абсолютные URL для данных JSON.И с абсолютными URL-адресами он должен совпадать с URL-адресом, по которому вы заходите на веб-сайт.Я получал доступ к веб-сайту с "localhost" URL на хост-машине.Вот почему это не сработало.

1 Ответ

1 голос
/ 21 апреля 2011

Как вы можете видеть здесь jqGrid работает в целом.

Я полагаю, что ваша основная проблема существует из-за использования префикса http://192.168.1.147:3000 в URL. Я предполагаю, что либо IP-адрес, либо номер порта теперь изменены, либо веб-сайт работает на другом веб-сервере. У Ajax есть важное ограничение, известное под именем Политика того же происхождения . Вы не можете получить данные с сервера, имеющего другой IP-адрес в качестве текущего веб-сервера. Даже номер порта должен быть одинаковым. Поэтому вы никогда не должны использовать абсолютные пути для url и менять его на url: "/ json / print-sets" и editurl:"/print-sets/post", например.

Еще одно замечание. Ваши данные JSON не имеют идентификационной информации. Случайно значения 'set_id' из входных данных равны 1,2,3. Если jqGrid не находит информацию об идентификаторах во входных данных JSON, он также использует 1,2,3 ... Таким образом, у вас нет проблем с редактированием данных. Если какой-то столбец (например, set_id) содержит уникальный идентификатор, вы должны включить key:true в соответствующее определение столбца.

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