Using jquery to make a POST, how to properly supply 'data' parameter?

can this help you

function CallPageSync(url, data) {
    var response;
    $.ajax({
        async: false,
        url: url,
        data: data,
        timeout: 4000,
        success: function(result) {
            response = result;
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            response = "err--" + XMLHttpRequest.status + " -- " + XMLHttpRequest.statusText;
        }
    });
    return response;
}

and you can call it like

response = CallPageSync(checkPageURL, "un=" + username);

An easier way is to provide the data property as an object, like this:

$.ajax({
  url: 'mysite/save',
  type: 'POST',
  data: { param0:'hi there!', param1:'blah blah', param2:'we get it' }
});

Otherwise, yes you should encode it, as anything with an & for example would screw things up very quickly. Providing it as an object represents a much clearer/simpler approach though, in my opinion anyway.

You can also space it out and retrieve properties from other places inline, like this:

$.ajax({
  url: 'mysite/save',
  type: 'POST',
  data: { 
          param0: $('#textbox0').val(), 
          param1: $('#textbox1').val(), 
          param2: $('#textbox2').val()
        }
});

Edit: If you're curious how jQuery does this encoding internally, it's using $.param() (which you can use directly as well) to encode the object to a string, called here, and the guts here.


If you have a form, you can also do var data = jQuery("#myForm").serialize(); which puts it in a form that jQuery.ajax can understand and use. Otherwise, use the object literal described in Nick's answer.


You need this part:

data: JSON.stringify({
    BarcodeNumber: $('#shipmentId-input').val(),
    StatusId: $('[name="StatusId"]').val()
}),

Full object :

$.ajax(
    {
        url: "/Agent/Shipment/BulkUpdate",
        method: "POST",
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify({
            BarcodeNumber: $('#shipmentId-input').val(),
            StatusId: $('[name="StatusId"]').val()
        }),
        success: function (data, textStatus, jqXHR) {
            if (textStatus== "success") {
                alert(data);
                // Handel success
            }
            else {
                // Handel response error
            }
        },
        error: function (jqXHR, textStatus, errorThrown){
              //Handel connection error
            }
        });

Tags:

Jquery