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

时间:2010-08-21 13:17:30

标签: javascript jquery http post multipart

我正在尝试使用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?如果不可能有一个简单的实现这个?

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

3 个答案:

答案 0 :(得分: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请求的example。以及相关的RFC 1867

multipart/form-data经常与上传文件相关联。如果是这种情况,您可以查看jquery form plugin,它可以让您对表单和supports file uploads进行调整。

答案 1 :(得分:1)

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

请参阅此链接以获取更多信息:FormData

使用FormData的教程:tutorial

答案 2 :(得分:0)

这种方式有效:

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