1

几天来,我一直在用头撞桌子……是时候寻求帮助了。

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

  1. 单击“编辑”>弹出窗口打开>单击“更新”(未进行更改)>弹出窗口关闭。结果 = 正如预期的那样。
  2. 单击“编辑”>弹出窗口打开>单击“取消”>弹出窗口关闭。结果 = 正如预期的那样。
  3. 单击“编辑”>弹出窗口打开>更新“客户端名称”字段>单击“更新”。结果 = 行中的值更改(在后台),弹出窗口保持打开状态,并显示一条警告,说明“未定义”。如果我然后关闭弹出窗口,则更改将丢失。作为此过程的一部分,还会生成 500 内部服务器错误。

这是我的剑道代码:

$(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

4

0 回答 0