2010-06-05 4 views
0

J'essaie de publier des données de mon formulaire dans une boîte de dialogue jquery qui charge du contenu externe.Transmettre des données via un ajax à une boîte de dialogue Jquery

Je suis sérialisation les données de forme qui fonctionne (apparaît dans l'URL), mais la boîte de dialogue ne sera pas ouvert:

 $("#wavajax button").click(function() { 
    $.post({url: 'player/index.php', data: $("#wavajax").serialize(), 
     success: function (data) { 

        $("#recordingdialog").load("player/index.php", [], function(){ 
       $("#recordingdialog").dialog("open"); 

       } 
    }); 
    return false; 
}); 

Qu'est-ce que je fais mal, vais-je parler de la bonne façon ???

+0

Est-ce que vous créez la boîte de dialogue avant cela? Vous ne savez pas non plus pourquoi vous faites un POST puis un GET de la même URL? –

+0

J'essaie de publier les données dans player/index.php et d'ouvrir cette page dans une boîte de dialogue avec les données affichées dans – user342391

+0

la boîte de dialogue ui devrait s'ouvrir, même si '# recordingdialog' est un div qui est placé dans votre balisage et vous incluez toutes les dépendances de dialogue ui. – jAndy

Répondre

4

Je pense c'est ce que vous êtes après:

$("#wavajax button").click(function() { 
    $.post('player/index.php', $("#wavajax").serialize(), function (data) { 
     $("#recordingdialog").html(data).dialog("open"); 
    }); 
    return false; 
}); 

Vous êtes déjà obtenir le contenu HTML retour du POST (ou du moins je pense que c'est le cas), si juste mettre cette réponse dans le #recordingdialog en utilisant .html() et ensuite faire l'appel de dialogue. Si vous n'êtes pas créer au préalable un dialogue avec des options, puis juste .dialog() suffit, .dialog('open') est destiné à lorsque vous avez créé la boîte de dialogue précédente avec différentes options et que vous voulez ouvrir maintenant, comme ceci:

$("#recordingdialog").dialog({ 
    //other options, width, height, etc... 
    autoOpen: false 
}); 

You can find a full list of these options here

+0

Cela fonctionne bien. Mais quand je ferme la boîte de dialogue et que je clique pour l'ouvrir à nouveau rien ne se passe aucune idée pourquoi o nick magistral – user342391

+0

@user cela ne devrait pas être le cas ... y at-il quelque chose d'autre avec cet élément '# recordingdialog'? –

+0

Oui, j'avais un en-tête inclus dans le haut du fichier player/index.php. enlevé et tout va bien. TU ES L'HOMME!!!! – user342391

0

C'est peut-être une meilleure idée d'afficher d'abord la boîte de dialogue et de charger le contenu.

$('#recordingdialog').dialog('destroy'); // just in case 
$('#recordingdialog').dialog({ 
    position: 'center', 
    // some more options 
    open: function(e, ui){ 
     $.post('player/index.php', data: $("#wavajax").serialize(),function (data){ 
       $("#recordingdialog").html(data); 
     }); 
    } 
}); 

dans votre gestionnaire de clic.

UI Dialog Doc

+0

Cette approche laisse une boîte de dialogue vide attendant le contenu à charger, puis clignotera quand elle le fait, je ne crois pas que ce soit une approche qui devrait être utilisée .... vérifiez aussi votre appel '$ .post()', ce n'est pas valide :) –

+0

Je suppose que cette approche est bien meilleure que de simplement laisser rien se passer après avoir appuyé sur le bouton. C'est peut-être une bonne idée d'insérer une sorte de gif 'loading 'dans la boîte de dialogue à l'ouverture. – jAndy

+0

Votre réponse actuelle renvoie une erreur de syntaxe javascript, donc ce n'est pas encore mieux;) –

0

Ok je l'ai travailler avec ceci:

 $("#recordingdialog").dialog({ 
    //other options, width, height, etc... 
    modal: true, 
     bgiframe: true, 
     autoOpen: false, 
     height: 550, 
     width: 550, 
     draggable: true, 
     resizeable: true, 
     title: "Play Recording",}); 


$("#wavajax button").click(function() { 
    $.post('player/index.php', $("#wavajax").serialize(), function (data) { 
     $("#recordingdialog").html(data).dialog("open"); 
    }); 
    return false; 
}); 

Merci Nick! Mais ayez un problème. Quand je ferme la boite de dialogue et clique sur le bouton pour l'ouvrir à nouveau rien ne se passe pourquoi pas ???