2011-04-20 2 views
0

어제는 정상적으로 작동했습니다. 이제 그리드가 비어 있습니다. (나는 밤에 업데이트를 했어.)하지만 윈도우 XP 머신에서 시도해 보면 IE와 FF4로드 그리드 모두 괜찮습니다. 모든 것이 작동합니다.jqGrid가 Archlinux에서 json 데이터로드를 중지했습니다.

하지만 Linux (archlinux 64 비트)에서 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

편집 : 올렉의 도움 덕분에 문제가 해결되었습니다. 그것은 json 데이터에 대해 절대 URL을 사용하고있는 것으로 나타났습니다. 절대 URL을 사용하면 웹 사이트에 액세스하는 URL과 일치해야합니다. 호스트 컴퓨터에서 "localhost"URL로 웹 사이트에 액세스하고있었습니다. 그것이 작동하지 않는 이유입니다.

+0

jqGrid를 정의하는 JavaScript 코드를 게시하고, JSON 데이터를 테스트하고, 사용하는 jqGrid, jQuery 및 jQuery UI의 버전 정보를 게시해야합니다. – Oleg

+0

내 코드가 손상된 경우 나도 마찬가지입니다. 그러나 그렇지 않습니다. 그것은 윈도우 머신에서 작동하고 플러스 어제 일하고 있었고, 그 이후로 변경하지 않았습니다. 하지만 나는 어젯밤에 리눅스 패키지를 업데이트했는데, 나는 그 도대체 무슨 일이 일어 났는지 기억하지 못한다. 어쨌든, 나는 코드를 게시 할 것이고, 나는 그저 아무 문제가 없다는 것을 알고있다. –

답변

1

어떻게하면 here 일반 jqGrid woks를 볼 수 있습니다.

URL에 접두어 http://192.168.1.147:3000이 붙어 있기 때문에 주요 문제가 있다고 가정합니다. IP 주소 나 포트 번호가 변경되거나 웹 사이트가 다른 웹 서버에서 실행된다고 가정합니다. Ajax는 same origin policy이라는 이름으로 알려진 중요한 제한 사항이 있습니다. 다른 IP를 가진 서버에서 현재 웹 서버로 데이터를 가져올 수 없습니다. 포트 번호조차 같아야합니다. 따라서 절대 경로를 url에 사용하지 말고 url : "/ json/print-sets"및 editurl:"/print-sets/post"으로 변경해야합니다.

한 번 더 말하십시오. JSON 데이터에는 ID 정보가 없습니다. 실수로 입력 데이터의 'set_id'값은 1,2,3입니다. jqGrid가 JSON 입력의 ID에 대한 정보를 찾지 못하면 1,2,3 ...을 사용하므로 데이터 편집에 아무런 문제가 없습니다. 일부 열 (예 : 'set_id')에 고유 ID가있는 경우 key:true을 해당 열 정의에 포함해야합니다.

+0

것은 IE 컴퓨터와 FF4 컴퓨터에서 모두 작동합니다. 그리고 그것은 리눅스 시스템에서도 완벽하게 작동했습니다 (내가 업데이트 할 때까지). 그래서 절대 URL이 문제가 아니라고 확신합니다. 그러나 나는 어쨌든 당신의 제안을 시도 할 것입니다. 도움이되는지 알려 드리겠습니다. JSON의 id는 내 JSOnReader에 id : "set_id"가 있습니다. 그러나 나는 열쇠를 댈 것이다. 아프지 않을거야. –

+0

@Vagif Verdi : 당신은'jsonReader'에서'id : "set_id"를 사용하고 있습니다. 나는 이것을 간과했다. 'key : true'를 사용하면 똑같이 수행됩니다. 'key : true'는 데이터 모델의 일부이므로 amd는 입력 형식 ('jsonReader','xmlReader')과 독립적입니다. 귀하의 경우에 어떤 문제가 있었는지 알려주십시오. – Oleg

+0

Oleg 대단히 감사합니다! 너는 자리에 있었어. 문제는 url이었습니다.전체 url 대신 "localhost"url을 사용했습니다. 그것이 전체 URL을 사용하고 있었기 때문에 그것이 다른 PC에서 작동 한 이유입니다. 모델에 정의 된 키에 대한 btw에 동의합니다. 또한 나는 라벨도 거기에 배치 될 수있는 것으로 나타났습니다. colNames 옵션을 제거하는 것이 더 나은지 궁금합니다. –

관련 문제