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