1

Datatable を作成し、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 を送信したときに返されるデータです (firebug から読み取ります)。

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 に答える