Kendo UI>更新网格>生成内部服务器错误

时间:2013-01-07 00:25:29

标签: php javascript mysql kendo-ui

我已经在我的桌子上砸了几天了......我请求帮助。

我正在尝试更新Kendo UI网格中的值。网格显示正确,弹出编辑器也是如此。那是美好时光结束的地方。情况如下:

  1. 点击“修改”> Popup打开>点击“更新”(不做更改)> Popup关闭。结果=正如预期的那样。
  2. 点击“修改”> Popup打开>点击“取消”> Popup关闭。结果=正如预期的那样。
  3. 点击“修改”> Popup打开>更新'clientName'字段>点击“更新”。结果=行中的值发生变化(在后台),弹出窗口保持打开状态,并显示一条说明“未定义”的警报。如果我然后关闭弹出窗口,则更改将丢失。作为此过程的一部分,还会生成500内部服务器错误。
  4. 这是我的剑道代码:

    $(document).ready(function () {
                        var crudServiceBaseUrl = "assets/data/",
                            dataSource = new kendo.data.DataSource({
                                transport: {
                                    read:  {
                                        url: crudServiceBaseUrl + "data.clients.php",
                                    },
                                    update: {
                                        url: crudServiceBaseUrl + "data.clients.update.php",
                                    },
                                    create: {
                                        url: crudServiceBaseUrl + "data.clients.create.php",
                                    },
    
                                    parameterMap: function(options, operation) {
                                        if (operation !== "read" && options.models) {
                                            return {models: kendo.stringify(options.models)};
                                        }
                                    }
                                },
                                batch: true,
                                pageSize: 10,
                                error: function(e) {
                                    alert(e.responseText);
                                },
                                schema: {
                                    data: function(result) {     
                                      return result.data || result;
                                    },
                                    total: function(result) {
                                        var data = this.data(result);
                                        return data ? data.length : 0;
                                    },
                                    model: {
                                        id: "clientID",
                                        fields: {
                                            clientID: { editable: false, nullable: true },
                                            clientName: { validation: { required: true } },
                                        }
                                    }
                                }
                            });
    
                        $("#grid").kendoGrid({
                            dataSource: dataSource,
                            pageable: true,
                            toolbar: ["create"],
                            columns: [
                                { field: "clientID", title: "Client ID" },
                                { field: "clientName", title: "Client Name"},
                                { command: "edit", title: " ", width: 110 }],
                            editable: "popup"
                        });
                    });
    

    这是我的PHP:

    include '../includes/connect.php';
    
        $clientName = mysql_real_escape_string($_POST["clientName"]);
        $clientID = mysql_real_escape_string($_POST["clientID"]);
    
        $rs = mysql_query("UPDATE cms_clients SET clientName = '" .$clientName ."' WHERE clientID = " .$clientID);
    
        if ($rs) {
            echo json_encode($rs);
        }
        else {
            header("HTTP/1.1 500 Internal Server Error");
            echo "Update failed for EmployeeID: " .$clientID;
        }
    

    哦,我知道这段代码存在潜在注入问题。那是第2步。

    任何帮助都将不胜感激。

    谢谢, @rrfive

0 个答案:

没有答案