Come passare parametri in $ajax POST?

Ho seguito il tutorial come indicato in questo link. Nel codice qui sotto per qualche motivo i dati non vengono aggiunti all'url come parametri, ma se li imposto direttamente nell'url usando /?field1="hello" funziona.

$.ajax({
        url: 'superman',
        type: 'POST',
        data: { field1: "hello", field2 : "hello2"} ,
        contentType: 'application/json; charset=utf-8',
        success: function (response) {
            alert(response.status);
        },
        error: function () {
            alert("error");
        }
    }); 
Soluzione

Vi raccomanderei di fare uso della sintassi $.post o $.get di jQuery per i casi semplici:

$.post('superman', { field1: "hello", field2 : "hello2"}, 
    function(returnedData){
         console.log(returnedData);
});

Se hai bisogno di catturare i casi di fallimento, fai così:

$.post('superman', { field1: "hello", field2 : "hello2"}, 
    function(returnedData){
         console.log(returnedData);
}).fail(function(){
      console.log("error");
});

Inoltre, se inviate sempre una stringa JSON, potete usare $.getJSON o $.post con un parametro in più alla fine.

$.post('superman', { field1: "hello", field2 : "hello2"}, 
     function(returnedData){
        console.log(returnedData);
}, 'json');
Commentari (3)

Prova a usare il metodo GET,

var request = $.ajax({
    url: 'url',
    type: 'GET',
    data: { field1: "hello", field2 : "hello2"} ,
    contentType: 'application/json; charset=utf-8'
});

request.done(function(data) {
      // your success code here
});

request.fail(function(jqXHR, textStatus) {
      // your failure code here
});

Non puoi vedere i parametri nell'URL con il metodo POST.

Modifica: Avviso di rimozione: Le callback jqXHR.success(), jqXHR.error(), e jqXHR.complete() sono state rimosse a partire da jQuery 3.0. È possibile utilizzare jqXHR.done(), jqXHR.fail() e jqXHR.always().

Commentari (0)

In una richiesta POST, i parametri sono inviati nel corpo della richiesta, ecco perché non li vedi nell'URL.

Se vuoi vederli, cambia

    type: 'POST',

a

    type: 'GET',

Notate che i browser hanno strumenti di sviluppo che vi permettono di vedere le richieste complete che il vostro codice emette. In Chrome, è nel pannello "Rete".

Commentari (0)