Dúvida sobre POST

2 respostas
G

Pessoal, tenho uma dúvida no funcionamento de uma requisição POST por ajax.

O funcionamento normal de uma requisição POST por meio de um form, permite que ao fazer a requisição, a mesma envie como parametro todos os inputs que estão dentro do formulário, após dar um submit na página. Até aí tudo bem, a maioria está cansado de saber disso!

Só que, pq qdo eu faço uma requisição POST por ajax, por exemplo com o jQuery.post(), eu preciso especificar os parametros explicitamente, e não funciona da forma citada acima, onde os parametros enviados, são todos os inputs da página?

não achei respostas sobre essa dúvida,
espero encontrar aqui,
obrigado

2 Respostas

jweibe

Não sei se entendi direito sua pergunta mais tipow.
Quando você tem um form e dentro dele um input do tipo submit ou um button do tipo submit ao clicar no botão a engine do
navegar serializa os controles input do seu form e submete para a url especificada. Lembrando que em HTML5 agora e possível
submeter controles input que estejam fora do form usando o atributo form indicando o id de algum formulário.
Agora com jQuery.post() você vai precisar serializar os controles input do seu form de forma manual, porém o jQuery tem um mecanismo
que faz isso para vocês.

<form>
  <div><input type="text" name="a" value="1" id="a" /></div>
  <div><input type="text" name="b" value="2" id="b" /></div>
  <div><input type="hidden" name="c" value="3" id="c" /></div>
  <div>
    <textarea name="d" rows="8" cols="40">4</textarea>
  </div>
  <div><select name="e">
    <option value="5" selected="selected">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
  </select></div>
  <div>
    <input type="checkbox" name="f" value="8" id="f" />
  </div>
  <div>
    <input type="submit" name="g" value="Submit" id="g" />
  </div>
</form>

Para visualizar a serialização veja:

$('form').submit(function() {
  alert($(this).serialize());
  return false;
});

O resultado do alert é algo como

a=1&b=2&c=3&d=4&e=5 // Sem ajax o navegador fazer isso implicitamente pra você.

fonte: http://api.jquery.com/serialize/

jhoamaral

A ideia da requisição AJAX é o processamento e renderização de trechos da pagina. Quando você submete via AJAX, tanto POST quanto GET, não precisa enviar todos o inputs do form, só envia aqueles que precisa para fazer o processamento, por isso vc tem que especificar quais inputs está enviando.
Se vovê quer enviar todo o form, existem formas de facilitar esse processo como foi postado por jweibe

Criado 5 de março de 2013
Ultima resposta 5 de mar. de 2013
Respostas 2
Participantes 3