[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 663
  • Last Modified:

How to partially serialize a form and do an ajax submit


Hi Experts!

I have quite a long form with 150 inputs. I would like to be able somehow to "ajax" submit this form with only the value that the user actually changed. A form submit is mandatory since I am using Struts on the backend. Right now I am transporting all the 150 elements to the server and this takes some time :)

Will be this possible?

Thank you!
0
dlcnet
Asked:
dlcnet
  • 5
  • 4
1 Solution
 
BadotzCommented:
You can wrap all of the inputs in a DIV, and sink the "onchange" event for the DIV, then by checking the SOURCE of the event, determine the ID of the input element that triggered the event (was changed). Upon submit, use this list to send only the changed element(s) and the content(s).
0
 
dlcnetAuthor Commented:
@Badotz

Thank you for your quick response. I do have my form in a div and I actually and I do a this.name / this.value.
I do not know however  how to put this in code that only this is submited in the form by $('#myform').submit
Can you provide me an example?

Thank you
0
 
leakim971PluritechnicianCommented:
Similar question here (not really but you will see the code in action) : http://www.experts-exchange.com/Programming/Languages/Scripting/AJAX/Q_26518491.html
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
dlcnetAuthor Commented:
@leakim971

Would this Code behave like a form.submit?
 I am actually doing the same thing now but still the backend does not see this as a form submit event

Thank you for your input
0
 
leakim971PluritechnicianCommented:
>Would this Code behave like a form.submit?

Yes. But be aware of the method, GET or POST.
0
 
dlcnetAuthor Commented:
@leakim971:

$(this).parents("div").serializeArray() this seems that will work. However how would I be able to add to this to more parameters say I need to send additionally "&param1=true&model=1" ?
0
 
leakim971PluritechnicianCommented:
serializeArray : http://api.jquery.com/serializeArray/

var param1 = {"param1":true};
var model = {"model":1};
var params = $(this).parents("div").serializeArray();
params.push(param1, model);
0
 
dlcnetAuthor Commented:
leakim971: I have the following code, where field1 is a select box.
In firefox when I look in the post firebug console I do not see nothing posted :(

$('#field1').change(function() {            
          var params = $(this).closest('tr').serializeArray();
          alert(params);
            var ajaxSettings = {
                      cache: false,
                      type: "POST",
                  data:  params,
                  success: function(response) {
                        doResponse();
                  }                     
                }
                jQuery.ajaxQueue.post("calculate", ajaxSettings);
    });
0
 
dlcnetAuthor Commented:
@leakim971

First was my problem :
var params = $("*", "#my-tr").serializeArray();

however I do get undefined when I do this:
var fieldName = $(this).attr('name')
var modelValue= $('#val').text();

var key= {"model":modelValue};
var field= {"fieldId":fieldName};
paams.push(key, field);

in firefox console teh serializeArray shows the values from the chosen id, however the other thow are undefined : undefine :(
0
 
leakim971PluritechnicianCommented:
>however I do get undefined when I do this:

So :
$(this) is not an object having a name attribute
What is $('#val') ?
0

Featured Post

Prep for the ITIL® Foundation Certification Exam

December’s Course of the Month is now available! Enroll to learn ITIL® Foundation best practices for delivering IT services effectively and efficiently.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now