Curiosidad de saber si alguien sabe cuál es la diferencia en lo que respecta a los datos de parámetro.

Tengo un $.post método que toma un $('#myform').serialize() como mis datos param y obras.

Si yo intente lo mismo con la $.ajax() enfoque, no funciona como mis datos param no parece correcto.

¿Alguien sabe la diferencia y lo que yo podría utilizar en lugar de la anterior .serialize?

InformationsquelleAutor Ed DeGagne | 2012-10-10

6 Comentarios

  1. 74

    Este post va a ser útil para usted.

    Enlace De Foro

    En corto siguientes :

    $.post( "/ajax", {"data" : json }) 

    Es equivalente a :

    $.ajax({ 
      type: "POST", 
      url: "/ajax", 
      data: {"data": json} 
    }); 
  2. 45

    El problema aquí no es el hecho de $.ajax() no es trabajo, es porque no se ha definido el tipo de parámetro en la petición Ajax y el valor predeterminado es una petición GET. Los datos se envían a través de la cadena de consulta para conseguir y si tu backend espera de ellos como parámetros post, no va a leerlos.

    $.post es sólo una llamada con $.ajax(), sólo con la type conjunto. Leer el docs y verás que $.ajax() defecto a OBTENER, como he mencionado anteriormente.

    Si usted va a la jQuery.post en la página de jQuery docs se muestra el $.petición ajax con el conjunto de tipo. De nuevo leer la documentación.

  3. 19

    Después de la re-lectura de algunos de documentación en línea, decidí seguir con $.post más de $.ajax.

    El $.ajax método de datos de param hace algo diferente a los us $.método post, no estoy seguro exactamente, pero hay una diferencia.

    La única razón por la que quería usar $.ajax es porque quería ser capaz de manejar los eventos y no se dio cuenta de que yo podía hacerlo con $.post.

    Aquí es lo que terminó con

    function GetSearchItems() {
        var url = '@Url.Action("GetShopSearchResults", "Shop", New With {.area = "Shop"})';
        var data = $("#ShopPane").serialize();
        //Clear container
        $('#shopResultsContainer').html('');
        //Retrieve data from action method
        var jqxhr = $.post(url, data);
        //Handle results
        jqxhr.success(function(result) {
            //alert("ajax success");
            $('#shopResultsContainer').html(result.ViewMarkup);
        });
        jqxhr.error(function() {
            //alert("ajax error");
        });
        jqxhr.complete(function() {
            //alert("ajax complete");
        });
    
        //Show results container
        $("#shopResultsContainer").slideDown('slow');
    }

    JQuery 3.x

    La jqXHR.el éxito (de), jqXHR.error(), y jqXHR.completa() de devolución de llamada
    los métodos son eliminados de jQuery 3.0. Usted puede utilizar jqXHR.hecho(),
    jqXHR.fail(), y jqXHR.siempre() en su lugar.

    var jqxhr = $.post(url, data);
    //Handle results
    jqxhr.done(function(result) {
        //alert("ajax success");
    });
    jqxhr.fail(function() {
        //alert("ajax error");
    });
    jqxhr.always(function() {
        //alert("ajax complete");
    });

    https://api.jquery.com/jquery.post/

    • «El jqXHR.el éxito (de), jqXHR.error(), y jqXHR.completa() métodos de devolución de llamada se quitan de jQuery 3.0.» – api.jquery.com/jquery.post
    • Bien consciente. Este post fue de hace 4 años.
    • ¿Por qué deshacer mi adiciones a su respuesta?
    • Dennis, mis disculpas, fue completamente por error. He corregido.
    • No hay problema, sólo tenía que preguntar para comprobar si hice algo mal o debe mejorar mi edición. Que tengan una buena semana.
  4. 12

    Se define esta como el parámetro de datos. $.post es sólo una forma abreviada de $.ajax que está a la espera de la siguiente.

    $.ajax({
        type : 'POST',
        url : url,
        data : data,
        success : success,
        dataType : dataType
    });
  5. 2

    Sólo como un complemento, en respuesta, se menciona que «El $.ajax método de datos de param hace algo diferente a los us $.método post, no estoy seguro exactamente, pero hay una diferencia«

    por favor, trate de usar :

        { 
            ... 
            data: JSON.stringify(yourJsonData), 
            ... 
        }

    Otra cosa que el objeto json conseguir que se inserta en la carga como la cadena con codificación url.

  6. -4

    En $.ajax usted es capaz de sincronizar, pero no es posible en el $.post función. Para sincronizar significa que usted puede conseguir el resultado devuelto.

    var tmp;
    $.ajax({
        'async': false,
        'type': "POST",
        'global': false,
        'dataType': 'html',
        'url': "Your Url",
        'data': {'type': 'data'},
        'success': function (data) {
            tmp = data;
        }
    });
    alert(tmp);
    • Eso no es cierto. Usted puede obtener un resultado devuelto a través de: $.post ("your.php", function(data) { _reference **data** as your returned result_ })
    • nagaking, este es absoluta, información incorrecta y no debe tener ningún upvotes. $.ajax $.post, y $.puede obtener TODOS los resultados de devolución.
    • Usted no puede capaz de obtener la devolución de respuesta de fuera de la función post
    • Async opción ha sido desaprobado por lo que he visto, para obtener un resultado a partir de la llamada ajax que hay mejores maneras que no nos deja con un navegador que puede salir de responder. Como usar el éxito de devolución de llamada.

Dejar respuesta

Please enter your comment!
Please enter your name here