Делать HTTP-вызов POST с multipart / form-data, используя jQuery? - PullRequest
16 голосов
/ 21 августа 2010

Я пытаюсь сделать вызов 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 объекта XMLHttpRequst устанавливается в false.

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

, т.е. не нужно передавать файлы, только некоторые данные.но сервер требует составной части.

Ответы [ 3 ]

11 голосов
/ 21 августа 2010

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 запроспохоже.И связанный RFC 1867 .

multipart/form-data довольно часто связан с загрузкой файлов.Если это ваш случай, вы можете взглянуть на плагин jquery для форм , который позволяет вам изменять формы, а также поддерживает загрузку файлов .

1 голос
/ 19 октября 2012

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

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

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

0 голосов
/ 08 октября 2012

Так работает:

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

...