Como posso usar Ajax, Perl e JSON fácil juntos?
-
05-07-2019 - |
Pergunta
Eu estou tentando fazer uma página web com Ajax.
Exemplo:
-
eu crio um arquivo Perl / CGU que desencadeia um post simples;
arquivo:? ..Test.cgi name = Thomas
Texto volta: Seu nome é Thomas
-
Eu criar um arquivo HTML que pode usar o post, mas então a página tem que recarregar. Eu uso a entrada de texto e um botão.
Como posso usar Ajax, Perl e JSON fácil juntos? É assim que devem trabalhar juntos, mas como?
Html + Ajax / JavaScript CHAMADA Perl + "JSON-perl-string" de retorno ao Ajax CONVERT-JSON -> HTML
Solução
Para JSON tentar o CPAN JSON módulo .
Para usar o XMLHttpRequest eu recomendo estes tutoriais maravilhosas da IBM.
Mastering Ajax, Part 1: Introdução ao Ajax
Os dois artigos que você provavelmente vai estar mais interessados ??em são estes dois:
Mastering Ajax, Part 10 : Usando JSON para transferência de dados
Mastering Ajax, Part 11: JSON no lado do servidor
Você pode obter toda a série 11 Parte usando esta pesquisa ligação .
Outras dicas
Você só precisa ter o seu pedido de retorno JSON (você pode apenas usar o JSON módulo no CPAN para isso) em vez de HTML. Isto significa que você precisa de um cabeçalho do tipo de conteúdo de application / json em vez de text / html e, em seguida, você precisa usar esse JSON na sua Javascript (usando uma biblioteca Javascript como jQuery ou Prototype é a sua melhor aposta aqui).
jQuery fornece muito fácil ajax e suporte JSON com a sua API, Ele lida com todos os objetos XMLHttpRequest para você. jQuery
Se o seu objetivo principal é evitar refrescante para atualizar a página que você poderia tentar scripting remoto usando o objeto XMLHttpRequest em XML.
Mais sobre isso aqui .
Dê o novo CPAN módulo Yote uma tentativa. Ele se liga objetos JavaScript para perl através de um JSON-RPC.
Aqui está um exemplo disso no cliente:
Servidor
package Hello;
use base 'Yote::AppRoot';
sub hello {
return "Hello World";
1;
Cliente
$.yote.init();
var hello_app = $.yote.fetch_app('Hello');
alert( hello_app.hello() );
// outputs "Hello World"