2016-02-01 2 views
0

Я использую последнюю jquery datatables 1.10 pluginКак добавить вводят ФОМА на JQuery существующего список параметров данных Ajax Поста

В моем АЯКСЕ вызове У меня есть следующий стандарт для передачи данных на мой asp.net mvc контроллер

"ajax": { 
      "type": "POST", 
      "url": '/myUrl/MyMethod/', 
      "contentType": 'application/json; charset=utf-8', 
      "data": function (data) { return data = JSON.stringify(data); } 
     }, 

У меня также есть форма на моей странице с различными элементами ввода. Идентификатор формы: form1

Что я хочу сделать, это добавить все элементы этой формы со значениями в параметры данных моего вызова ajax, чтобы мой сервер мог его забрать.

Я не хочу терять текущие данные, которые передаются по datatables. Я хочу добавить элементы ввода формы в данные JSON.

В качестве обходного пути я передаю ему значения элементов входных элементов form1 отдельно в URL-адресе, но это далеко не идеально, как вы можете видеть.

"ajax": { 
      "type": "POST", 
      "url": '/myUrl/MyMethod/?myselect='+$('#myselect').val(), 
      "contentType": 'application/json; charset=utf-8', 
      "data": function (data) { return data = JSON.stringify(data); } 
     }, 

Вопрос:

Как изменить строку:

"data": function (data) { return data = JSON.stringify(data); } 

добавлять #form1 входы без явного указания одного входа в то время.

+0

вы можете написать расширение JQuery для преобразования формы сериализован объект JSON, например здесь http://stackoverflow.com/questions/1184624/convert-form-data -to-javascript-object-with-jquery? answertab = active # tab-top , а затем в вашем коде «данные»: функция (данные) {return {data: JSON.stringify (data), form1: JSON. stringify ($ ('form'). serializeObject())}} –

ответ

0

Вы можете использовать удобную функцию .serializeArray.

Так для кода JQuery:

var form_data = $("#form1").serializeArray(); 

//I'm just assuming here that 'table_data' is an existing array with index/values in it from your datatables 

$.each(form_date,function(index,value){ 
    table_data[value['name']] = value['value'] 
}) 

//And now both sets of data are merged and you can just pass table_data to your ajax call