Я использую Datatables jeditable, и я могу обновлять данные POST в базе данных, но после первого редактирования эхо-сообщение возвращается к таблице, показывает самое последнее изменение. Например, я делаю редактирование, и он отображает новое значение + "обновленный сервер" в поле. Я делаю редактирование для другого поля в том же столбце (в другой строке), а таблица отображает новое значение + "обновленный сервер", но тогда начальная строка также показывает, что последнее значение. База данных правильная, поэтому это проблема с тем, как значение обрабатывается при возврате.
здесь код. любые идеи о том, почему последнее обновление отображается для всех обновленных полей?
var oTable = [];
$('.myTable').each(function() {
// var tid = $(this).attr('id');
//alert(tid);
var obj = {};
obj=$('#'+$(this).attr('id')).dataTable({
bFilter: false,
sPaginationType: 'full_numbers',
bSort: true
aoColumns: [
{bSortable: false},
{bSortable: false},
null,
null,
null,
null,
null,
null,
null,
{
data: " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
type: 'select',
submit: 'ok'
},
null
]
});
oTable.push(obj);
});
$('[id^="rnote"]').on('click',
function() {
var tid = $(this).attr('id');
var tabnum = tid.slice(5,6);
var ind = tabnum-1;
var aPos = oTable[ind].fnGetPosition(this);
var selrow = oTable[ind].fnGetData(aPos[0]);
var stnum = selrow[0]; //store
var supnum = selrow[2]; //supplier number
var invnum = selrow[4]; //invoice number
var row = aPos[0];
$('.editable',oTable[ind].fnGetNodes()).editable('edit_errorcode.php', {
callback: function(sValue, y) {
oTable[ind].fnUpdate(sValue, aPos[0], aPos[1]);
},
submitdata: function(value, settings) {
return {
column: oTable[ind].fnGetPosition(this)[2],
stnum: stnum,
supnum: supnum,
invnum: invnum
};
},
submit: 'Save',
placeholder: ''
});
});
Я решил это. Проблема заключалась в значениях aPos (position) при обратном вызове. Они не обновлялись с обновленной строкой. Я возвращаю переменную aPos в обратном вызове, чтобы убедиться, что она использует правильную позицию, и это устраняет проблему:
$('.editable',oTable[ind].fnGetNodes()).editable('edit_errorcode.php', {
callback: function(sValue, y) {
aPos = oTable[ind].fnGetPosition(this); //added this line
oTable[ind].fnUpdate(sValue, aPos[0], aPos[1]);
},