2016-12-30 6 views
0

Я использую бесплатный jqGrid от Oleg. После моего редактирования формы, я пытаюсь обернуть мои данные POST, так что в PHP я получаю хороший массив как:free jqGrid: упаковка данных POST в функции beforeSubmit

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, '']); 
      } 

Unfortuntely это не работает; console.log (d) красиво печатает желаемый результат, но postdata не изменяется. Я не разбираюсь в javascript, но я подозреваю, что глобальная почта не изменяется изнутри функции, и, к сожалению, функция не позволяет мне ее вернуть.

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

спасибо.

ответ

1

Обратный вызов beforeSubmit не лучший выбор в вашем случае. Вместо этого я рекомендую вам использовать обратный вызов serializeEditData, который вы можете определить либо как вариант редактирования формы (внутри параметра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; 
} 
+0

youdaman !! Еще раз спасибо, приятель! – Roadowl

+0

@Roadowl: Добро пожаловать! – Oleg