views:

351

answers:

2

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.

+4  A: 

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.

Darin Dimitrov
+1  A: 

You can't upload files using AJAX - XMLHttpRequest. What you can do is a trick with an iframe using - this plugin.

also see this tutorial.

DMin
You certainly can do `multipart/form-data` POST requests from `XMLHttpRequest`. What you can't do in all browsers *yet* is read a client-side file from a file upload field. File uploads are a typical reason why one might use `multipart/form-data` instead of `application/x-www-form-urlencoded`, but it's not inherent to form-data that it will contain a file upload, or that that uploaded data will be sourced from the filesystem. See http://www.w3.org/TR/FileAPI/ for how client-side file-reading will work in the future (and in some browsers, now).
bobince
@bobince I see what you are saying. edited my answer.
DMin
there's no need to upload files , just send some parameters.
yaniv