使用jQuery使用multipart / form-data进行HTTP POST调用?

我正在尝试使用jQuery使用multipart / form-data进行HTTP POST调用:

$.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); } }); 

它不起作用。 Firebug返回未定义的错误,返回的XMLHttpRequst对象multipart字段设置为false。

我可以做些什么来使用jQuery工作? 如果不可能有一个简单的实现这个?

即idon’t不需要传输文件,只需要一些数据。 但服务器需要多部分。

multipart/form-data看起来不像这样:

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

这是application/x-www-form-urlencoded

以下是multipart/form-data请求的示例 。 和相关的RFC 1867 。

multipart/form-data经常与上传文件相关联。 如果是这种情况,您可以查看jquery表单插件 ,它允许您ajaxify表单并支持文件上传 。

使用FormData(),您可以通过ajax请求上传文件。

有关详细信息,请参阅此链接: FormData

关于使用FormData的教程 : 教程

这种方式有效:

 $( "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