2010-02-12 2 views
0

En ce moment, ce que j'essaie de faire est de remplacer une étiquette sur la première page par un bloc de HTML. En ce moment, la page a essentiellement:Problème avec l'utilisation de Jquery.ajax sur .load sur Zend

<label id="replace"></label> 

les js a actuellement:

$(document).ready(function(){ 
    $("#replace").load('/test'); 
}); 

la fonction de la classe Zend a:

public function indexAction(){ 
    $this->_helper->layout()->disableLayout(); 
    $this->_view->message = "This is from TestController index"; 
} 

et enfin le modèle index.phtml a simplement:

<?php echo $this->message;?> 

Droite maintenant, je veux changer le code afin qu'au lieu de simplement remplacer cette étiquette avec le même message, il ferait un POST où la fonction sortira un paramètre, fera quelque chose (comme par exemple, aller à la base de données et tirer quelque chose avec le paramètre POST), puis renvoyez le message.

J'ai essayé de modifier les js afin qu'il ressemblerait à ceci:

$.post('/test', {param : "test_param"}, 
function(data) {$("#replace").html(data);}); 

ou

$.ajax({ 
    type: 'POST', 
    url: '/test', 
    data: "{param:test_param}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(data) {$("#replace").html(data);} 
}); 

ni travaillé. J'ai pris du recul et essayé de répliquer la fonctionnalité .load et faire:

$.ajax({ 
    url: '/test', 
    success: function(data) { 
    $('#replace').html(data); 
    alert('Load was performed.'); 
    } 
}); 

et cela ne fonctionne pas non plus.

Quelqu'un a des conseils sur la façon de procéder?

Répondre

0

Etes-vous sûr de pouvoir appeler directement le /test sans utiliser l'ajax? Voir aussi quelle est l'url absolue que vous appelez. Essayez d'ajouter un rappel d'erreur et voyez-le fonctionner, il vous donnera la réponse d'erreur qui vous aidera à résoudre le problème.

+0

J'ai changé le code un peu pour que je puisse voir s'il y a des erreurs qui apparaissent. J'ai ajouté: "error: function (msg) {alert ('Erreur survenue aveC#replace:' .msg);}" dans l'appel ajax et que Firebug signale une erreur: "missing} after property list" sur cette ligne. On dirait que je ferme correctement mes parens, donc je ne suis pas sûr de ce qui se passe là-bas. – Matthew

+0

manquant virgule entre la fonction de succès et la fonction d'erreur – thetaiko

+0

aussi dans 'alert ('Erreur est survenue aveC#replace:' .msg)' avant msg il devrait être un '+' –

0

Le code .post d'origine, vous avez droit semble

$.post('/test', { param: "test_param" }, function(data) { 
$('#replace').html(data); 
}); 

Vous pouvez également regarder votre navigateur console JavaScript pour voir si des erreurs sont signalées.

0

Votre contrôleur est-il configuré sur JSON automatique pour coder les paramètres de vue?

De toute façon, je pense que votre censé y accéder comme

{succès:. Fonction (données) {$ ("# remplacer") html (data.message); }