jqgrid不显示php json数据

时间:2013-06-02 03:11:24

标签: php json jqgrid-php

  

我的jqgrid没有显示从我的php文件返回的json数据。 php文件生成json数据>正确但我的jqgrid html文件没有显示它。我找不到原因。请帮忙。

myfirstgrid.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Address</title>

  <link rel="stylesheet" type="text/css" media="screen" href="css/ui-lightness/jquery- ui-1.10.3.custom.css" />
 <link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />

 <script src="js/jquery-1.9.0.min.js" type="text/javascript"></script>
 <script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
 <script src="js/jquery.jqGrid.src.js" type="text/javascript"></script>
 <script type="text/javascript">

 $(function () {
 $("#list").jqGrid({
     url: 'example.php',
     datatype: 'json',
    mtype: "GET",
    colNames: ["addressid", "buildingname", "street", "cityid", "countryid",    "statteid","pincode","phone","mobile","fax"],
     colModel: [
         { name: "addressid", width: 55 },
         { name: "buildingname", width: 90 },
         { name: "street", width: 80, align: "right" },
         { name: "cityid", width: 80, align: "right" },
         { name: "countryid", width: 80, align: "right" },
         { name: "stateid", width: 150, align: "right" },
     { name: "pincode", width: 150, align: "right" },
         { name: "phone", width: 150, align: "right" },
         { name: "mobile", width: 150, align: "right" },
         { name: "fax", width: 150, align: "right" }

     ],
     pager: "#pager",
     rowNum: 10,
     rowList: [10, 20, 30],
     sortname: "invid",
     sortorder: "desc",
     viewrecords: true,
     gridview: true,
     autoencode: true,
     caption: "Address"
   }); 
  }); 
 </script>


</head>
<body>
<table id="list"><tr><td></td></tr></table> 
<div id="pager"></div>
</body>
</html>

使用example.php

<?php

// initialization
 $dbhost = "";
 $dbuser = "root";
 $dbpassword = "ERTFS645@#";
 $database = "dbeg";

// connect to the database
 $db = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: ");
 mysql_select_db($database) or die("Database connection error.");

// get the count of rows
 $result = mysql_query("SELECT * FROM Address");
 $row = mysql_fetch_array($result, MYSQL_ASSOC);
 $count = $row['count'];

 // create a response array from the obtained result
 $i = 0;


while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

echo json_encode($row);

}

 mysql_close($db);
?>

example.php的输出

  

{ “addressid”: “101”, “buildingname”: “Sundale旅馆”, “街道”: “OTTP”, “cityid”: “652”, “countryid”: “6”, “statteid”:“65 “,”pincode“:”656665“,”手机“:”986346654“,”手机“:”823343454“,”传真“:”554332“}

2 个答案:

答案 0 :(得分:0)

你json应该看起来像

{
    "page": 2,//current page
    "total": 2,//number of pages
    "records": 11,//# of records in total
    "rows": [//array of data
        {
            "id": "101",//id for this row of data
                "cell": [
                "101",
                "Sundale",
                "OTTP",
                "652",
                "6",
                "65",
                "656665",
                "986346654",
                "823343454",
                "554332"
            ]
        }
    ]
}

http://www.trirand.com/blog/jqgrid/jqgrid.html

答案 1 :(得分:0)

<?php      $page =  $_GET['page']; // get the requested page
     $limit = $_GET['rows']; // get how many rows we want to have into the grid
     $sidx =  $_GET['sidx']; // get index row - i.e. user click to sort
     $sord =  $_GET['sord']; // get the direction

    $page = 2;
    $limit = 30;
   if(!$sidx) $sidx =1;

// connect to the database
$db = mysql_connect("localhost", "root", "luis1983") or die("Connection Error: " . mysql_error());
mysql_select_db("wine") or die("Error conecting to db.");
$result = mysql_query("SELECT COUNT(*) AS count FROM wine.wine");
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$count = $row['count'];

if( $count >0 ) {
    $total_pages = ceil($count/$limit);
} else {
    $total_pages = 0; }
if ($page > $total_pages) $page=$total_pages;
$start = $limit*$page - $limit;
$SQL = "SELECT wine_id, wine_name, wine_ENGINE,  winery_id, description FROM wine.wine LIMIT   30";
 $result = mysql_query( $SQL ) or die("Couldn t execute query.".mysql_error());

  $responce = (object) array('page' => $page, 'total' => $total_pages, 'records' =>$count, 'rows' => "");

  $responce->page = $page;
  $responce->total = $total_pages;
  $responce->records = $count;
  $i=0;
   while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

      $responce->rows[$i]['id']=$row['wine_id'];
       $responce->rows[$i]    ['cell']=array($row['wine_id'],$row['wine_name'],$row['wine_ENGINE'],$row['winery_id'],$row['d escription']);
    $i++;
  } 
  echo json_encode($responce);

   mysql_close($db);
  ?>