2010-08-21 31 views
16

Tôi đang cố gắng để thực hiện cuộc gọi POST HTTP với multipart/form-data, sử dụng jQuery:Thực hiện cuộc gọi HTTP POST với nhiều dữ liệu/biểu mẫu bằng jQuery?

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

Nó không làm việc. Firebug trả về lỗi không xác định và trường số nhiều đối tượng trả về XMLHttpRequst được đặt thành false.

Tôi có thể làm gì để thực hiện công việc này với jQuery? Và nếu nó không thể là có một đơn giản để đạt được điều này?

tức là không cần chuyển tệp, chỉ một số dữ liệu. nhưng máy chủ yêu cầu nhiều phần.

Trả lời

11

multipart/form-data không nhìn vào như thế này:

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

Đây là application/x-www-form-urlencoded.

Đây là số example về cách yêu cầu multipart/form-data. Và liên quan RFC 1867.

multipart/form-data thường được kết hợp với tải lên tệp. Nếu đây là trường hợp của bạn, bạn có thể xem jquery form plugin, cho phép bạn đánh dấu các biểu mẫu và supports file uploads.

0

Bằng cách này hoạt động:

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

gì nếu dữ liệu Tôi đang cố gắng để gửi không phải là thực sự trong một hình thức đầy đủ chính thức? –

+0

Tôi gặp lỗi khi nói attr không được xác định cho phần đặt contentType. –

1

Sử dụng FormData(), bạn có thể upload file thông qua yêu cầu ajax.

Tham khảo link này để biết thêm: FormData

Hướng dẫn về việc sử dụng FormData: tutorial

+2

FormData không tương thích với ie8/9 – Exegesis

+0

xem tại đây cho FormData trong ie8/9 hack - http://stackoverflow.com/q/8286934/1429387 – naXa

Các vấn đề liên quan