2010-08-21 63 views
16

我试图与多/表单数据的HTTP POST调用,使用jQuery:使用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返回一个未定义的错误,并将返回的对象多部分字段设置为false。

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

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

回答

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

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

+0

如果我试图发送的数据实际上不是一个完全成熟的形式? – 2012-10-18 15:17:31

+0

我收到一个错误,说attr没有为设置contentType的部分定义。 – 2012-10-18 15:31:20

1

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

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

教程关于使用FORMDATA:tutorial

+2

FormData与ie8/9不兼容 – Exegesis 2013-10-11 20:07:32

+0

在这里查看FormData在ie8/9中的破解 - http://stackoverflow.com/q/8286934/1429387 – naXa 2015-12-28 09:08:46