1

我创建了一个数据表,我正在使用 jeditable 插件来编辑单元格以推回数据。我可以编辑单元格,但是当我按 Enter 并将其发送回我的 URL Rest 端点(我只有一个 System.out.println 来查看数据)时,我从 firebug 收到此错误

“NetworkError: 415 Unsupported Media Type -我的休息端点 url

我的端点期待 JSON 中的对象,jeditable 仅发送一些字符串参数。所以我需要把它包起来。让我发布我的数据表初始化以及 jeditable init。

var computerTable = $("#table_computerTable ").dataTable({
           "bProcessing": true,
           "bServerSide": true,
           "bInfo":false,
           "bAutoWidth":false,
           "bScrollInfinite":true,
           "sAjaxSource": ApiUrl(),
           "aoColumns":[       // Maps <th> elements in html to JSON data
               {"mData": "id"},
               {"mData": "description","sClass" : "read_only"},
               {"mData": "serial"},
               {"mData": "daily"}
             ],
           "aoColumnDefs":[
               {"sName":"id","bVisible":false, "aTargets": [0]},
               {"sWidth": "55%","aTargets": [1]},
               {"sName":"serial","bVisible":false, "aTargets": [2]},
               {"sName":"daily","aTargets":[3]}
             ],
            "fnServerData": function ( sSource, aoData, fnCallback ) {
                   $.getJSON( sSource, aoData, function (json) { 
                       map = {};
                       map["aaData"] = json;
                       fnCallback(map);
                   });
            },
            "fnRowCallback": function(nRow, aData, iDisplayIndex ){
                $(nRow).attr("id",aData["id"]); // Change row ID attribute to match database row id
                return nRow;
            }
        }).makeEditable({
            sUpdateURL: getApiUrl() + "cpu/save",
            sReadOnlyCellClass: "read_only",
            ajaxoptions:{
                dataType: "json",
                type: 'POST'
            }
        });

这是我发送 POST 时返回的数据(从萤火虫读取)

columnId    3
columnName  daily
columnPosition  2
id  24
rowId   0
value   50

我想做的是初始化一个对象,然后发回我想要的所有数据。ID / Serial / Hourly(新值)

我不知道足够的 jquery,javascript 知道从哪里开始修改。

有什么建议么?

4

1 回答 1

3

像这样编辑您的 makeEditable:

makeEditable(
{
  sUpdateURL: function(value, settings)
  {
    var sentObject = {}
    var rowId = oTable.fnGetPosition(this)[0];
    var columnPosition = oTable.fnGetPosition(this)[1];
    var columnId = oTable.fnGetPosition(this)[2];
    var sColumnTitle = oTable.fnSettings().aoColumns[columnId].sTitle; 
    sentObject["rowid"]= rowId
    sentObject["columnpos"]= columnPosition
    sentObject["columnId"]= columnId
    sentObject["sColumnName"]= sColumnTitle
    sentObject["valueOfCell"]=value
    sentObject["Serial"]="serialnumber"
    sentObject["Hourly"]="somevalue"
    $.ajax({
    type: "POST",
    url: "url",
    data: "sentObj="+JSON.stringify(sentObject)
    })
    return value;
  },
  sSuccessResponse: "IGNORE"
 }
);

这就像更新单元格的 ajax 请求的自定义。

于 2012-11-10T11:54:31.030 回答