Actualmente, tengo un formulario, el envío lo redirigirá a una página de error o descargará un archivo. Sin embargo, recientemente se modificó el lado del servidor y, por ahora, también podría devolver algo de JSON, que debo manejar. Por lo tanto, por lo que tengo, no puede obtener un resultado de envío de formulario, hice una llamada POST en lugar de un formulario, pero ¿cómo podría manejar diferentes tipos de devolución? Debería usar jQuery para ello, y actualmente funciona de la siguiente manera solo para descargar:
$.ajax({ url: 'some-url', type: 'POST', cache: false, data: { // some required data }, xhrFields: { responseType: 'blob' }, success: function(response, status, req) { if (response.hasSuggestions) { // this code is prepared to work with JSON data return; } var fileName = req.getResponseHeader('content-disposition').split('; ')[1].replace('filename=', ''); var contentType = req.getResponseHeader('content-type'); var blob = new Blob([response], { type: contentType }); var isIE = false || !!document.documentMode; if (isIE) { window.navigator.msSaveBlob(blob, fileName); } else { var url = window.URL || window.webkitURL; link = url.createObjectURL(blob); var a = $("<a />"); a.attr("download", fileName); a.attr("href", link); $("body").append(a); a[0].click(); a.remove(); } }, error: // some error handler }) Y si el servidor devuelve datos JSON o redirige, solo obtengo "[object Blob]" . Sé que se debe al campo response-type , pero ¿cómo podría manejar diferentes tipos de respuesta? PD: si no establezco un response-type , habrá un gran dolor de cabeza al convertir correctamente una cadena en un blob