Выполнение вызова HTTP POST с помощью multipart/form-data с помощью 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 возвращает ошибку undefined, а для возвращаемого поля multipart объекта XMLHttpRequst
установлено значение false.
Что я могу сделать, чтобы сделать эту работу с jQuery? И если это невозможно, есть ли простое достижение?
то есть. Не нужно передавать файлы, просто некоторые данные. но сервер требует multipart.
Ответы
Ответ 1
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, который позволяет вам создавать формы ajaxify и поддерживает загрузку файлов.
Ответ 2
Используя FormData(), вы можете загружать файлы через запрос ajax.
Обратитесь к этой ссылке для получения дополнительной информации: FormData
Учебник об использовании FormData: tutorial
Ответ 3
Этот способ работает:
$( "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