17

I'm trying to make a HTTP POST call with multipart/form-data , using jQuery:

$.ajax({
  url: 'http://localhost:8080/dcs/rest',
  type: 'POST',
  contentType:'multipart/form-data',
  data: 'dcs.source=boss-web&query=data&dcs.algorithm=lingo&dcs.output.format=JSON&dcs.clusters.only=true', 
  //dataType: "jsonP",
  success: function(jsonData) {alert('POST alert'); data=jsonData ; },
  error : function(XMLHttpRequest, textStatus, errorThrown) {
            console.log('An Ajax error was thrown.');
            console.log(XMLHttpRequest);
            console.log(textStatus);
            console.log(errorThrown);
          }
});

It doesn't work. Firebug returns an undefined error and the returned XMLHttpRequst object multipart field is set to false.

What can i do to make this work with jQuery? And if it's not possible is there a simple to achieve this?

i.e. idon't need to transfer files , just some data. but the server requires multipart.

3 Answers 3

11

multipart/form-data doesn't look at like this:

dcs.source=boss-web&query=data&dcs.algorithm=lingo&dcs.output.format=JSON&dcs.clusters.only=true

This is application/x-www-form-urlencoded.

Here's an example of how multipart/form-data request looks like. And the related RFC 1867.

multipart/form-data is quite often associated with uploading files. If this is your case you could take a look at the jquery form plugin which allows you to ajaxify forms and supports file uploads as well.

Sign up to request clarification or add additional context in comments.

Comments

1

Using FormData(), you can upload files via ajax request.

Refer this link for more info: FormData

Tutorial about using FormData: tutorial

2 Comments

FormData is not compatible with ie8/9
look here for FormData in ie8/9 hack - stackoverflow.com/q/8286934/1429387
-1

This way works:

$( "form#upload-form" )
    .attr( "enctype", "multipart/form-data" )
    .attr( "encoding", "multipart/form-data" );
$.ajax({ 
    type: "POST",
    contentType:attr( "enctype", "multipart/form-data" ),
    url: "/adm/oferta_insert",
    data: dados, 
    success: function( data ) { 
        alert( data );  
    }  
});  

http://www.bennadel.com/blog/1273-Setting-Form-EncType-Dynamically-To-Multipart-Form-Data-In-IE-Internet-Explorer-.htm

2 Comments

What if the data I'm trying to send isn't actually in a full-fledged form?
I get an error saying attr is not defined for the part that sets the contentType.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.