Me pregunto cómo podría hacer esto con jQuery ajax. Ahora mismo tengo una ventana emergente del cuadro de diálogo jQuery ui y tiene un archivo de entrada html en ella.¿Cómo subir un archivo a través de jQuery?
Ahora cuando el usuario hace clic en importar, quiero hacer una publicación de AJAX en el servidor con jQuery.
No estoy seguro de cómo pasar el archivo a mi vista de acción.
En este momento tengo que hacer un post completo de nuevo, así que tengo este
<% using (Html.BeginForm("Import", "Controller", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%>
<br />
<p><input type="file" id="file" name="file" size="23 accept="text/calendar"></p><br />
<p><input type="submit" value="Upload file" /></p>
<% } %>
Luego, en mi regulador
public ActionResult Import(HttpPostedFileBase file)
Así que no estoy seguro de cómo pasar de una HttpPostedFileBase con jQuery y cómo establecer enctype = "multipart/form-data"
en jQuery.
Editar
Ok así la forma plugin de jQuery parece ser el camino a seguir.
$('#frm_ImportCalendar').livequery(function()
{
var options = {
dataType: 'json',
success: function(response)
{
alert(response);
}
};
$(this).ajaxForm(options);
});
Me preguntaba por qué mi JSON no funcionaba pero alguien mencionó que no se puede utilizar simplemente como es. Estoy revisando el otro enlace donde alguien pudo usar json.
No estoy seguro por qué en Lck se usa .Submit antes del método de envío de AJAX.
Editar
¿Cómo podría cambiar el resultado JSON de carga de archivos para volver mi diccionario matriz?
Dictionary<string, string> result = new Dictionary<string, string>();
result.Add("Msg", "Success!!");
result.Add("Body", calendarBody);
// how can I change this?
return new FileUploadJsonResult { Data = new { message = string.Format("{0} uploaded successfully.", System.IO.Path.GetFileName(file.FileName)) } };
Estaba viniendo aquí a preguntar por qué no va a volver JSON lol. Hice algo similar, pero Id id no especifica .submit. Vea editar por lo que tengo hasta ahora. – chobo2
JavaScript no puede aceptar JSON como formato de datos para las solicitudes que cargaron un archivo por razones de seguridad (está documentado en la página web de jQuery Form). Le sugiero que use XML, que es casi lo más simple de usar como JSON con jQuery ... o quizás los valores en texto sin formato separados por líneas nuevas. Utilicé .ajaxEnviar explícitamente porque tomé el ejemplo de algún código de mi propio proyecto donde hago algunas cosas más con el formulario. Debería ser prácticamente equivalente a tu código de todos modos. – LorenzCK
Bueno, ¿cómo sería este XML? Publiqué mi colección de diccionarios que convierto a un resultado Json, ¿cómo puedo convertirlo a XML? – chobo2