ikk1
ikk1

Reputation: 45

Send form elements and array through $.ajax()

I need to pass through $.ajax() method some form elements and an array too. How can i send serialize and array by ajax?

my code bellow:

function loadgraficosajax(){
		var arr = ['331234','142323','327767'];
  
    	var data = $('#p-form').serialize;
  
        $.ajax({
            type: "POST",
            url: "/page/show",
            data: data,
            dataType : 'html',
            success: function (msg) {
                $(document).ajaxComplete(function (event, request, settings) {
                    $('.has-error').removeClass('has-error');

                    $(document).off('ajaxComplete').off('ajaxSend');
                    $('#addajax').html(msg);
                 });
            }
        });
	}

Upvotes: 1

Views: 90

Answers (3)

Sandman
Sandman

Reputation: 2307

You could bundle the two items together in a stringified object which you can send:

function loadgraficosajax(){
    var arr = ['331234','142323','327767'];

    var data = $('#p-form').serialize();

    var request = {
        array: arr,
        elements: data
    }

    var data = JSON.stringify(request);

    $.ajax({
        type: "POST",
        url: "/page/show",
        data: data,
        dataType : 'json',
        success: function (msg) {
            $(document).ajaxComplete(function (event, request, settings) {
                $('.has-error').removeClass('has-error');

                $(document).off('ajaxComplete').off('ajaxSend');
                $('#addajax').html(msg);
             });
        }
    });
}

Upvotes: 0

antyrat
antyrat

Reputation: 27765

serialize is a method in jQuery, not a property, so you should call it in this way:

var data = $('#p-form').serialize();

and to pass your array you need to use param method and modify your array to be inside Object, where array name is object property:

var arr = { arr: ['331234','142323','327767'] };
var data = $('#p-form').serialize();
data += '&' + $.param( arr );

param will transform your object to serialised string:

console.log($.param( arr )); // "arr[]=331234&arr[]=142323&arr[]=327767"

Upvotes: 1

Marko Milivojevic
Marko Milivojevic

Reputation: 579

 var formData = new FormData($('#p-form')[0]);

 var arr = ['331234','142323','327767'];

 // append array to formData
 formData.append('arr',JSON.stringify(arr));

 $.ajax({
     type: "POST",
     url: "/page/show",
     data: formData,
     success:.....

Upvotes: 0

Related Questions