2013/9/17 Ari Sobel <
arieh...@gmail.com>:
>
> O que eu quero é pegar esse Html que ele gera, gravar num campo dentro
> 'text' dentro ada minha tabela, no caso 'Orçamento' e mas pra frente egar
> esse campo e manda-lo como e-mail, ou renderizar um PDF em cima dele.
Bom, se você quer enviar um campo para o backend para alterar um
estado do seu sistema, por definição você precisa fazer um POST.
Sim, estou sendo purista nesse caso. hehehe
>
> no ajax pensei que dava pra jogar o valor do campo em uma variável, e
> mandar a variável pra a def no controller. Mas acho que nao é bem assim, né?
É assim, mas veja a separação entre client side e server side.
O javascript roda no browser, enquanto o web2py roda no servidor.
Então, o client precisa enviar os argumentos de modo que o server
entenda.
>
> Teria que se referir a request.vars, certo?
Sim, desde que seu client envie uma requisição no formato de query string.
Mas, sendo purista novamente, uma query string envia requisição como
GET, o que não seria indicado para mudar estado da sua aplicação.
> Esse request.vars poderia pegar o valor de qqer variável?
Sim, desde que ela seja passada pelo cliente assim:
http://meusite.com/meucontroller?var1=conteudo&var2=conteudo
>
> parece que request.vars.html_do_pdf nao funciona no controller, conforme
> testei.
> Só daria passar o valor para o controller se fosse via input?
Não, o campo não precisar ser renderizado como um <input> no html. Até
porque nem precisa de um form html para enviar dados para o
controller, basta ser uma URL.
O que eu recomendaria:
1) Faça seu controller recebendo dado via POST a partir de um
formulário comum, sem usar FORM ou SQLFORM.
2) Depois que isso funcionar, faça seu ajax enviar uma requisição de
POST passando os mesmos parâmetros.
Outra dica:
Lembre-se que uma requisição ajax é uma chamada normal de URL e pode
ser testada diretamente pela barra de endereço do seu navegador.
Então, para facilitar seu teste, faça-a funcionar, primeiro, como uma
URL normal (o que ela realmente é), informando os parâmetros na URL
(quando for um GET) ou enviando um formulário (quando for um POST).
Assim fica mais fácil ter controle sobre o que está acontecendo.