javascript — бесплатный jqGrid: перенос данных POST в функцию beforeSubmit

Я использую бесплатный 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, но подозреваю, что глобальные постданные не меняются внутри функции, и, к сожалению, функция не позволяет мне их возвращать.

Любые предложения о том, как решить эту проблему. Это небольшая проблема, но я просто подумал, что она выглядела более структурированной и более удобной для поддержания четкого разделения между оператором и его данными.

Спасибо.

0

Решение

Обратный звонок 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;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]