我们如何通过PHP将Mysql数据编码为JSON

时间:2012-03-09 11:10:39

标签: php jquery json jsonp kendo-ui

我想知道,我们如何使用php将MYSQL数据编码为JSONP数据。我们还包括JSONP类。请查看以下代码以创建JSONP。

<?php
require('JSON.php'); 
$link = mysql_pconnect("localhost", "root", "") or die("Unable To Connect To Database Server");
mysql_select_db("users") or die("Unable To Connect To Northwind");
// add the header line to specify that the content type is JSON
// determine the request type
header("Content-type: application/json");  

$sth = mysql_query("SELECT ID, Title FROM ldr");

$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $data[] = $r;
}
//print json_encode($rows);

$encoder = new Services_JSON();  
$json = $encoder->encode($data);  

echo 'callback(' . $json . ');'; 
?> 

请查看制作上述代码的确切值,它会返回这些值。 (octave-global.com/portal/tool/index.php)

实际上,我们要求为基于Kendo-UI的程序获取这些值,就像我们在下面提到的那样。

<!DOCTYPE html>
<html>
<head>
    <title></title>
<script src="js/jquery.min.js"></script>
    <script src="js/kendo.all.js"></script>
    <link href="css/kendo.common.css" rel="stylesheet" />
    <link href="css/kendo.default.css" rel="stylesheet" />
</head>
<body>
            <div id="example" class="k-content">
            <div id="grid"></div>

            <script>
                   $(document).ready(function () {

                        dataSource = new kendo.data.DataSource({
                            transport: {
                                read:{
                                url: "http://www.octave-global.com/portal/tool/",
                                 dataType: "jsonp"
                                },
                                update: {
                                  url: "data/update.php",
                                  dataType: "jsonp"
                                },
                                destroy: {
                                    url:"data/update.php",
                                    dataType: "jsonp"
                                },
                                create: {
                                    url: "data/save.php",
                                    dataType: "jsonp"
                                },
                                parameterMap: function(options, operation) {
                                    if (operation !== "read" && options.models) {
                                        return {models: kendo.stringify(options.models)};
                                    }
                                }
                            },
                            batch: true,
                            pageSize: 10,
                            schema: {
                           model: {
                                     model: {
                                id: "ID",
                                fields: {
                                    Title: { editable: true},
                                    }
                    }
                        }
                    });

              $("#grid").kendoGrid({
                    dataSource: dataSource,
                    navigatable: true,
                    pageable: true,
                    height: 400,
                    toolbar: ["create", "save", "cancel"],
                    columns: [
                        "Title",
                       { command: "destroy", title: " ", width: "110px" }],
                    editable: true
                });
            });
        </script>
    </div>


</body>
 </html>

当我们阅读此网址时,它无效: - octave-global.com/portal/tool/ 它仅适用于此URL: - demos.kendoui.c​​om/service/Products。

请建议我如何根据此网址demos.kendoui.c​​om/service/Products进行PHP配置。

谢谢

ROD

1 个答案:

答案 0 :(得分:0)

除了语法错误,您需要将内容类型切换为应用程序/ javascript application / x-javascript 。您对JSONP的请求(通过Kendo UI)由JavaScript解释器评估。它们不会被JSON解析器解析。