2009-11-14 6 views
1

Si j'appelle directement cette fonction, cela fonctionne très bien, mais si je l'appelle de Javascript en utilisant un appel ajax il ne fonctionnera pas correctement.Comment utiliser Ajax avec jQuery en Perl?

J'ai découvert la raison pour cela, c'était parce que j'utilisais $ (document) .ready (fonction ..) où je devrais appeler les fonctions directement après que l'ajax renvoie les résultats.

+0

Travailler sur l'apprentissage de la mise en forme markdown afin que cette question peut avoir plus de sens en mettant en forme le code. – dlamblin

+0

Ceci fait partie du code que vous voyez. En fait, le javascript est appelé lorsque l'utilisateur clique sur quelque chose. Je ne veux pas que cela fonctionne directement lors du chargement. – Luci

+0

aussi: 'escape 'ne devrait pas être utilisé, sa sortie est similaire à (mais incompatible avec) le codage d'URL. 'encodeURI' n'est pas correct non plus. Remplacez les deux par 'encodeURIComponent'. Cependant, si vous utilisez jQuery comme le disent les balises, vous pouvez juste passer '' {target: 'get_section'} 'à la méthode' ajax' (ou 'post') et l'encodage fonctionnera pour vous. – bobince

Répondre

3

Si confus, votre code Perl sort juste html sans en-têtes (comme le type de contenu). Votre javascript ne semble pas utiliser jQuery, et aucun des ID référencés n'apparaît dans votre exemple.

Avez-vous cherché à utiliser load quelque chose comme: $('#view_span').load('filename_ajax.cgi');?
Ou peut-être:

$('#view_span').load(
    'filename_ajax.cgi', 
    {'target': escape(encodeURI('get_section'))}, 
    alertViewResult); 
4

Au minimum, votre script Perl doit produire le type de texte suivant avant toute autre sortie:

 
Content-Type: text/html 

Notez qu'il doit y avoir une ligne vide après la ligne Content-Type .

Si vous ne parvenez pas à le faire, le serveur n'enverra pas le texte au JavaScript. En général, il déclencherait la ligne

alert('There was a problem with the request.'); 

dans votre JavaScript. Si vous examinez la valeur de la variable .status, elle doit être égale à 500, un code d'erreur indiquant que votre script a échoué.

3

Bien qu'il soit un peu sous-documenté (au moins pour quelqu'un qui n'est pas déjà familier avec jQuery lui-même), avez-vous jeté un oeil à JQuery sur CPAN?