none
Ajax no evalúa el success RRS feed

  • Pregunta

  • Que tal!!

    Estoy teniendo problema con Ajax, en MVC 4:

    Tengo una vista, en donde cargo una image, la cual copio a una carpeta utilizando Ajax. El código es  éste:

    <form enctype = "multipart/form-data" onsubmit="uploadFile()" role="form" method="post">
        <div class="form-group">
                    <input id="file" name="file" type="file" class="file" data-preview-file-type="submit">
                </div>
    </form>

    Y el JavaScript es éste:

    function uploadFile()
        {
            var formData = new FormData($('form')[0]);
            $("#file").delay(10000).queue(function (n)
            {
                debugger;
                $.ajax({
                    type: "POST",
                    data: formData,
                    dataType: "multipart/form-data",
                    url: "/Pruebas/Pruebas2", 
                    error: function (data)
                    {
                        alert("Error en petición AJAX");
                    },
                    success: function (data)
                    {
                        if (data == "SiSeSubio")
                        {
                            alert("Funcionó!!");
                        }
                        n();
                    }
                });
    
            });
    
        }

    En el controlador, tengo el siguiente código, que se llama desde el Ajax:

    [HttpPost]
            public string Pruebas2(HttpPostedFileBase file)
            {
                var fileName = Path.GetFileName(file.FileName);
                var path = Path.Combine(Server.MapPath("~/App_Data/Imagenes"), fileName);
                file.SaveAs(path);
    
                return "SiSeSubio";
            } 

    Todo funciona bien, hasta la parte del return de Pruebas2, no retorna a evaluar el Succes en la función Ajax, y en vez de eso, me muestra directamente el string "SiSeSubio".

    Cómo puedo hacer para mostrar el alert??

    Gracias por su ayuda!


    AUR

    jueves, 12 de febrero de 2015 0:27

Respuestas

  • Que tal! 
    Una disculpa por no haber actualizado antes la solución: Todo funciona bien cambiando la función ajax por el código siguiente: 
    $.ajax({
            type: "POST",
            data: formData,
            dataType: "html",
            cache: false,
            url: "/Pruebas/Pruebas2", 
            processData: false,
            contentType: false,
            xhr: function ()
            {  // Custom XMLHttpRequest
                var myXhr = $.ajaxSettings.xhr();
                if (myXhr.upload)
                { 
                  //Más código
                }
                return myXhr;
            },
            success: function (data)
            {
                if (data == "SiSeSubio")
                {
                    alert("Carga Exitosa");
    
                } 
            },
            error: function (jqXHR, textStatus, errorThrown)
            {
                console.log(textStatus, errorThrown);
                alert("No se ha cargado el archivo: " + errorThrown.toString());
            }
        });

    AUR

    • Marcado como respuesta Ale Uribe lunes, 27 de abril de 2015 21:55
    lunes, 27 de abril de 2015 21:55

Todas las respuestas

  • La función uploadFile() debe retornar false al final.

    Jose R. MCP
    Code Samples

    jueves, 12 de febrero de 2015 5:22
  • hola

    si la idea es subir un archivo no creo que usar $.ajax funcione

    usa este plugin de jquery

    jQuery-File-Upload

    How to display upload progress with the basic plugin

    ----

    >>Todo funciona bien, hasta la parte del return de Pruebas2, no retorna a evaluar el Succes en la función Ajax, y en vez de eso, me muestra directamente el string "SiSeSubio".

    encierra el codigo del action dentro de un try...catch, seguramente el debug no lo muestre pero se este generando un error

    es mas si lo dejas continuar seguramente pase por el error del $.ajax

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 12 de febrero de 2015 11:10
  • Que tal! 
    Una disculpa por no haber actualizado antes la solución: Todo funciona bien cambiando la función ajax por el código siguiente: 
    $.ajax({
            type: "POST",
            data: formData,
            dataType: "html",
            cache: false,
            url: "/Pruebas/Pruebas2", 
            processData: false,
            contentType: false,
            xhr: function ()
            {  // Custom XMLHttpRequest
                var myXhr = $.ajaxSettings.xhr();
                if (myXhr.upload)
                { 
                  //Más código
                }
                return myXhr;
            },
            success: function (data)
            {
                if (data == "SiSeSubio")
                {
                    alert("Carga Exitosa");
    
                } 
            },
            error: function (jqXHR, textStatus, errorThrown)
            {
                console.log(textStatus, errorThrown);
                alert("No se ha cargado el archivo: " + errorThrown.toString());
            }
        });

    AUR

    • Marcado como respuesta Ale Uribe lunes, 27 de abril de 2015 21:55
    lunes, 27 de abril de 2015 21:55