2012-11-06 3 views
0

안녕하세요 stackoverflow 국가! 나는 그런 걸림돌을 보았다. ajax 내에서 검색되는 jqGrid 배열 데이터를 전달하려고 시도하지만 작동하지 않습니다. 스크립트 여기 =>jqGrid 로컬 데이터 아약스 내

$(function(){ // this script works just fine (of course this array and jqGrid initialization script is in the same file) 
var arr = [ 
    {a:"a",b:"b"}, 
    {a:"c",b:"d"} 
]; 
$("#_tb").jqGrid({ 
    datatype: "local", 
    data: arr, 
    colNames: ["ONE","Two"], 
    colModel: [ 
     {name:"a",index:"a",align:"center"}, 
    {name:"b",index:"b",align:"center"} 
    ], 
    pager: $("#_pager"), 
    height: "auto" 
}); 
}); 

살펴보고 있습니다 것은 내 문제 =입니다>

$.ajax({ 
    url: "../info.php", 
    type: "get", 
    data: {}, 
    success: function(r){ 
     $("#_tb").jqGrid({ 
     datatype: "local", 
     data: r, 
     colNames: ["ONE","Two"], 
     colModel: [ 
      {name:"a",index:"a",align:"center"}, 
      {name:"b",index:"b",align:"center"} 
     ], 
     pager: $("#_pager"), 
     height: "auto" 
     }); 
    } 
    }); 

이 스크립트가 작동하지 않지만, 데이터가 성공적으로 JSON 형식으로 아약스에서 검색됩니다. 여기 info.php 스크립트 너무

// using PDO for connection 
foreach($con->query("SELECT * FROM tb") as $row){ 
    $info[] = array(
     "a" => $row["a"], 
     "b" => $row["b"] 
    ); 
} 
echo json_encode($info); 

PS입니다. 내 생각에 내 문제는 데이터 유형에 연결되어 있지만 그런 식의 검색 예제에도 불구하고 어떻게 해결할 수 있을지 생각할 수 없습니다. 주목할만한 점은 SQL where 문없이 jqGrid에서 데이터를 검색하고 필터링하기 때문에 데이터 유형을 로컬로 지정하기 바랍니다. 내가 기뻐할 것입니다 조언과 감사합니다 :)

+0

현재 코드를 사용하려면'dataType : "json"'또는'contentType : "application/json"'과 같은'jQuery.ajax' 매개 변수를 추가해야합니다. 잘못된 매개 변수를 사용하면'success' 콜백에서'r' 매개 변수의 타입은 객체의 배열 대신에'string'이 될 수 있습니다. 따라서'$ .parseJSON (r)'을 호출하여'r'을 수동으로 객체로 변환해야 할 수도 있습니다. – Oleg

+0

@Oleg의 조언에 감사드립니다. 따라서 두 번째 예제에서 서버에서 정보를 검색하고 jqGrid를 로컬로 추가하려고 할 때 가능하면 변환 할 수 있습니다. – tnanoba

답변

2

미안하지만, 당신이 일을 게시 코드 : the demo 참조 :

enter image description here

그래서 다른 곳에서 문제를 검색한다 .

코드 예 : 번을 번으로 실행할 수 있습니다. 그리드 을 작성하고을 입력 한 다음 data 매개 변수와 트리거 reloadGrid의 값을 변경하여 데이터를 변경해야합니다. 그런데 url: "../info.php"을 jqGrid에서 직접 사용할 수 있습니다. 해당 jsonReader을 추가하기 만하면됩니다 (here 참조). 로컬 필터링을 사용하려면 loadonce: true을 jqGrid 매개 변수 목록에 추가하기 만하면됩니다. 또는 때마다 GridUnload 메서드를 호출하여 격자를 다시 만들 수 있습니다 (예제는 the answer 참조).

관련 문제