2010-04-16 6 views
-1

J'essaie d'obtenir jQuery.post() pour exécuter mon script php, puis ouvrez une boîte de dialogue jQuery UI avec les données que le script php renvoie. Son supposé revenir comme une forme avec une table et un textarea dedans. Cela fonctionne très bien avec alert(data); et je reçois un pop-up avec toutes mes données.jQuery.post() problèmes avec le passage de données à jQuery UI

Le problème commence si j'éteins alert(). Maintenant, il ouvre 2 boîtes de dialogue. Un contenant uniquement la table, sans zone de texte, et le second absolument vide.

Qu'est-ce que je fais mal ici? Comment se fait-il que toutes mes données apparaissent dans le alert(), mais pas dans le dialogue? Que dois-je faire pour le réparer?

Oh, et dois-je également inclure $.ajax() avant le $.post()?

Merci.

$.post("/path/to/script.php", 
       { id: this.id, value: value }, 
       function(data){ 

        // THIS WORKS 
        //alert(data); 

        // THIS DOES NOT WORK 
        $(data).dialog({ 
          autoOpen: true, 
          width: 400, 
          modal: true, 
          position: 'center', 
          resizable: false, 
          draggable: true, 
          title: 'Pending Changes' 
        }); 
       } 



    ); 
+0

Je dois également ajouter que lorsque j'exécute ce code, j'obtiens un message d'erreur de 'jquery.js', en disant ' Uncaught TypeError: Impossible de définir la propriété 'display' de undefined'. Je ne suis pas entièrement sûr de savoir comment résoudre ce problème ou ce qu'il recherche .... – solefald

Répondre

0

Ah! Ce n'était pas un problème avec le JS, mais mon fichier php. La zone de texte était en dehors de <div>blah blah</div>.

Problème résolu.

0

Vous n'avez pas besoin d'un autre appel $.ajax(). La méthode $.post() est un raccourci de wrapper à $.ajax(). Ce qui pourrait arriver, c'est que vous pourriez avoir à la fois un comportement par défaut et un comportement lié à Javascript. Je suppose que cette action $.post déclenché sur un clic. Si c'est le cas, alors à la fin de votre gestionnaire $.click() vous devez return false pour éviter le comportement par défaut.

$('input[type=submit]').click(function() { 
    $.post(/* ... */); 
    return false; 
}); 
+0

J'aurais dû préciser que le clic est initié par jEditable. '$ (". Editable_textarea "). Editable (submitEdit, {/ * quelques trucs ici * /'}); puis '$ .post()' se trouve dans la fonction submitEdit (valeur, paramètres) {} '. Je devrais probablement également préciser que je ne sais rien à propos de JS. J'utilise la technique du "trial and error" ici ... – solefald

0

Voici comment je le gère. J'ai un div vide et initialise le dialogue sur document prêt. Maintenant sur le retour ajax charge ce html de div avec les données reçues de PHP et appelle la méthode "ouverte" de dialogue. Simple et fonctionne définitivement.

HTH

Questions connexes