17

我正在尝试使用 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对象多部分字段设置为 false。

我该怎么做才能使这个与 jQuery 一起工作?如果不可能,是否有一个简单的方法来实现这一目标?

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

4

3 回答 3

11

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 并支持文件上传

于 2010-08-21T13:27:01.660 回答
1

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

有关更多信息,请参阅此链接:FormData

关于使用 FormData 的教程:教程

于 2012-10-19T09:58:37.273 回答
-1

这种方式有效:

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

于 2012-10-08T13:45:53.777 回答