2013-07-10 144 views
0

我試圖在jqgrid中顯示json數據,我沒有得到任何行。jqgrid:無法顯示json數據

這裏是我的網格:

$('#jqList').jqGrid({ 
     url: '/my/url', 
    datatype: 'json', 
    colNames:['field1', 'field2'], 
    colModel:[ 
     {name:'field1',index:'field1', width:200}, 
     {name:'field2',index:'field2', width:300} 
    ], 
    pager: '#jqPager', 
     rowNum: 20, 
     rowList: [10, 20, 30, 50], 
     height: '100%', 
     viewrecords: true, 
     jsonReader: { 
      repeatitems: false, 
      root: function (obj) { return obj; }, 
      page: function (obj) { return 1; }, 
      total: function (obj) { return 1; }, 
      records: function (obj) { return obj.length; }, 
      id: 'id' 
     } 
}); 

我可以訪問我的瀏覽器我的網址,它顯示是這樣的:

{"rows": [ 
     {"id": "3", "field1": "blabla", "field2": "blabla"}, 
     {"id": "10", "field1": "blabla", "field2": "blabla"}, 
     {"id": "4", "field1": "blabla", "field2": "blabla"}, 
     {"id": "8", "field1": "blabla", "field2": "blabla"} 
    ] 
} 

但是,當我顯示我的網格,我沒有我說的任何數據。 如果我檢查控制檯,我的網址有500個錯誤(一些參數添加到網址)

我希望我提供了足夠的信息。

編輯 螢火控制檯說:

"NetworkError: 500 Internal Server Error - http://localhost/path/to/my/url?_search=false&nd=1373439192511&rows=20&page=1&sidx=&sord=asc" 

我使用PHP的Apache服務器上

PHP代碼:

header('Content-type: application/json'); 
foreach ($cars as $k => $v) { 
    $tab['rows'][$k] = $v['Car']; 
} 
echo json_encode($tab); 

感謝

+0

對不起,我可以編輯有關您的500錯誤(消息等)的詳細信息 – tpeczek

+0

我已經添加了螢火蟲控制檯日誌 – ThEBiShOp

回答

0

看來,jqGrid的等待這樣的一個網址:路徑/要/我的/ JSON/URL,儘管我給url : path/to/my/url 開發服務器上...和url : path/to/my/url工作公測服務器上的微細...

我不明白爲什麼,如果URL是「錯誤的」,爲什麼錯誤不是404?

反正它現在工作正常...

感謝您的時間

1

看來,由jqGrid生成的URL:

http://localhost/path/to/my/url?_search=false&nd=1373439192511&rows=20&page=1&sidx=&sord=asc 

導致服務器端的某種錯誤的(我不知道哪個服務器端技術,您使用的,但例如在ASP.NET的情況下,這種反應意味着有未處理的異常) 。

你說,乾淨的URL,這應該是這樣的:

http://localhost/path/to/my/url 

工作正常。在這種情況下你,如果你不需要它的jqGrid被添加參數,你可以嘗試告訴jqGrid的解決這個問題不要叫他們:

$('#jqList').jqGrid({ 
    url: '/my/url', 
    datatype: 'json', 
    colNames:['field1', 'field2'], 
    colModel:[ 
     {name:'field1',index:'field1', width:200}, 
     {name:'field2',index:'field2', width:300} 
    ], 
    pager: '#jqPager', 
    rowNum: 20, 
    rowList: [10, 20, 30, 50], 
    height: '100%', 
    viewrecords: true, 
    prmNames: { 
     page: null, 
     rows: null, 
     sort: null, 
     order: null, 
     search: null, 
     nd: null 
    }, 
    jsonReader: { 
     repeatitems: false, 
     root: function (obj) { return obj; }, 
     page: function (obj) { return 1; }, 
     total: function (obj) { return 1; }, 
     records: function (obj) { return obj.length; }, 
     id: 'id' 
    } 
}); 

這不是一個完美的解決方案(我們仍然沒有按不知道爲什麼你的服務器產生內部錯誤以及如何解決這個問題),但它可能會使你的代碼工作。如果你想解決服務器端問題,我們必須更多地瞭解服務器上發生的事情。

+0

謝謝。我在apache服務器上使用php。 我試過你的prmNames方法,我仍然有500錯誤,但是網址現在已經清除了任何參數。 – ThEBiShOp

+0

@ThEBiShOp然後,您需要調試並提供有關您的服務器端代碼的更多信息。問題在那裏,我們無法在客戶端做更多的事情。檢查你的Apache日誌的入門。 – tpeczek

+0

在apache錯誤日誌中,我沒有任何相關的信息(最後一個條目在2小時前丟失了一個favicon),並且在訪問日誌中有: '127.0.0.1 - - [10/Jul/2013:11:21:59 +0200]「GET/my/url HTTP/1.1」500 169' – ThEBiShOp

0

通常當我得到500錯誤,這意味着該URL路徑是錯誤的Java腳本或MVC控制器。

的第一件事是第一次,

你的數據圖,它是在同一個文件作爲網格?如果是,則給它一個名稱並在url中引用該名稱。如果您從數據庫獲取數據,那麼您可能使用控制器來獲取數據並將其轉換爲json可序列化對象。所以url應該指向那個控制器的位置。