javascript - formdata - jquery post file via ajax
¿Hacer una llamada HTTP POST con multipart/form-data usando jQuery? (3)
Estoy tratando de hacer una llamada HTTP POST con multipart / form-data, usando 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);
}
});
No funciona Firebug devuelve un error no definido y el campo multiparte del objeto XMLHttpRequst
devuelto se establece en falso.
¿Qué puedo hacer para que esto funcione con jQuery? Y si no es posible, ¿hay un simple para lograr esto?
Es decir, no es necesario transferir archivos, solo algunos datos. pero el servidor requiere multiparte.
De esta manera funciona:
$( "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 );
}
});
multipart/form-data
no se ve así:
dcs.source=boss-web&query=data&dcs.algorithm=lingo&dcs.output.format=JSON&dcs.clusters.only=true
Esta es la application/x-www-form-urlencoded
.
Aquí hay un example de cómo se ve la solicitud multipart/form-data
. Y el relacionado RFC 1867 .
multipart/form-data
se asocia a menudo con la carga de archivos. Si este es tu caso, puedes echar un vistazo al complemento de formulario jquery que te permite ajaxify formularios y también admite la carga de archivos .