Como passar os parâmetros em $ajax POST?

Eu segui o tutorial como indicado em este link. No código abaixo por alguma razão os dados não são anexados à url como parâmetros, mas se eu defini-los diretamente na url utilizando /?field1="hello" ele funciona.

$.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");
        }
    }); 
Solução

Eu recomendaria que você faça uso do $.post ou $.get sintaxe de jQuery para casos simples:

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

Se precisar de apanhar os casos de falha, basta fazer isto:

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

Adicionalmente, se você sempre envia uma string JSON, você pode usar $.getJSON ou $.post com mais um parâmetro no final.

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

Tente usar o método 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
});

Não é possível ver os parâmetros no URL com o método POST.

Editar:

Notificação de Depreciação: O jqXHR.success(), jqXHR.error(), e jqXHR.complete() callbacks são removidos a partir de jQuery 3.0. Você pode usar jqXHR.done(), jqXHR.fail(), e jqXHR.always() em seu lugar.

Comentários (0)

Em um pedido POST, os parâmetros são enviados no corpo do pedido, que's porque você não't os vê no URL.

Se você quiser vê-los, mude

    type: 'POST',

para

    type: 'GET',

Note que os navegadores têm ferramentas de desenvolvimento que lhe permitem ver os pedidos completos que o seu código emite. No Chrome, it's no "Network" painel.

Comentários (0)