Я использую бесплатный jqGrid Олега. После редактирования формы я пытаюсь обернуть свои данные POST, чтобы в PHP я получил хороший массив вроде:
Array(
oper => edit,
data => Array(
foo => '123',
bar => 'xyz',
...
)
)
где оператор и данные, с которыми он работает, хорошо разделены.
Мой интуитивный подход был бы что-то вроде:
beforeSubmit: function( postdata, formid ) {
var d = {};
d.data = postdata;
console.log( d );
postdata = d;
return( [true, ''] );
}
К сожалению, это не работает; console.log (d) приятно печатает желаемый результат, но постданные не изменяются. Я не очень разбираюсь в javascript, но подозреваю, что глобальные постданные не меняются внутри функции, и, к сожалению, функция не позволяет мне их возвращать.
Любые предложения о том, как решить эту проблему. Это небольшая проблема, но я просто подумал, что она выглядела более структурированной и более удобной для поддержания четкого разделения между оператором и его данными.
Спасибо.
Обратный звонок beforeSubmit
не лучший выбор в вашем случае. Вместо этого я бы порекомендовал вам использовать serializeEditData
обратный вызов, который вы можете определить как вариант редактирования формы (внутри formEditing
параметр jqGrid) или как параметр jqGrid. Обратный звонок получить postdata
как единственный параметр, и он должен возвращать измененный объект строки JSON, который должен быть отправлен на сервер. Код может быть примерно следующим
serializeEditData: function (postdata) {
var d = {
oper: postdata.oper,
data: $.extend(true, {}, postdata) // make copy
};
delete d.data.oper; // remove unneeded oper property
return d;
}
Других решений пока нет …