2010-08-21 1 views
16

Я пытаюсь сделать POST вызов HTTP с многочастных/форм-данных с помощью JQuery:Выполнение запроса HTTP POST с помощью multipart/form-data с использованием 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); 
      } 
}); 

Это не работает. Firebug возвращает неопределенную ошибку, а возвращаемое поле объекта multipart field установлено в значение false.

Что я могу сделать, чтобы сделать эту работу с jQuery? И если это невозможно, просто ли достичь этого?

i.e. Не нужно передавать файлы, просто некоторые данные. но сервер требует multipart.

ответ

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.

Вот example как выглядит multipart/form-data. И связанные RFC 1867.

multipart/form-data нередко ассоциируется с загрузкой файлов. Если это ваш случай, вы можете взглянуть на jquery form plugin, который позволяет вам также создавать формы ajaxify и 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

Что делать, если данные, которые я пытаюсь отправить это на самом деле не в полноценном виде? –

+0

Я получаю сообщение об ошибке, указывающее, что attr не определен для той части, которая устанавливает contentType. –

1

Использование FormData(), вы можете загрузить файлы через запрос AJAX.

Смотрите эту ссылку для получения дополнительной информации: FormData

учебник об использовании FormData: tutorial

+2

FormData несовместим с ie8/9 – Exegesis

+0

смотрите здесь FormData в ie8/9 hack - http://stackoverflow.com/q/8286934/1429387 – naXa

Смежные вопросы