Situatie
Ik ben momenteel een webapplicatie aan het ontwikkelen waarin ik gebruik maak van de volgende componenten (laatste versies):
Index.php
Content/pagina1.php
Dialogs.php
Wanneer ik eerst op de link "Feedback" druk, wordt er netjes een Dialog geopend, de content (het feedbackformulier) wordt goed ingeladen en wanneer ik op Submit druk krijg ik ook een goede response van post.php. Als ik vervolgens op de link van "Contact" druk om een dialog te openen met daarin het contactformulier, dan werkt dat ook allemaal goed.
Wanneer ik een Dialog wil openen vanuit jQuery UI Tabs geladen content werkt dat ook allemaal (inclusief de post en response). Als ik direct daarna op Contact of Feedback druk,opent de dialog, wordt de content netjes geladen, maar wanneer ik dan op Submit druk krijg ik in de Firebug console venster de onderstaande error en geen response meer van post.php.
Error
uncaught exception: [Exception... "Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIDOMHTMLDocument.implementation]" nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: http://mijnsite.nl/ :: <TOP_LEVEL> :: line 0" data: no]
Line 0
Als de error eenmaal geweest is moet ik eerst een page refresh doen voordat een willekeurige dialog weer werkt.
Het probleem doet zich ook voor als ik eerst een dialog open vanuit de footer van index.php en daarna vanuit de in tabs geladen content. Ook doet het probleem zich voor wanneer ik tussen tabs wissel (dus 2x vanuit verschillende in tabs geladen content). Wanneer ik vanuit de in tabs geladen content 2x achter elkaar dezelfde dialog open gaat alles wel gewoon goed.
Ik ben nu al enkele dagen bezig om dit probleem op te lossen. Eerst liep ik tegen het probleem aan dat een dialog maar 1x geopend kan worden. Dat heb ik o.a. middels dit artikel en dit artikel deels kunnen verhelpen, maar ik blijf maar vastlopen op deze error
.
Ik hoop dat iemand mij hier een beetje op weg kan helpen, want ik heb werkelijk echt van alles al geprobeerd en kom er maar niet uit!
Bedankt alvast!
Ik ben momenteel een webapplicatie aan het ontwikkelen waarin ik gebruik maak van de volgende componenten (laatste versies):
- jQuery 1.5.1
- jQuery UI 1.8.11
- jQuery Form Plugin 2.67
Index.php
HTML:
1
2
3
4
5
6
7
8
9
10
| <div id="tabs"> <ul> <li><a href="content/pagina1.php"><span>Pagina 1</span></a></li> <li><a href="content/pagina2.php"><span>Pagina 2</span></a></li> </ul> </div> <div id="footer"><a href="dialogs.php?dialog=contact" title="Contact">Contact</a> | <a href="dialogs.php?dialog=feedback" title="Feedback">Feedback</a></div> </div> |
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| <script type="text/javascript"> $(document).ready(function() { // Loading animaties aanmaken var $preloader = '<img src="images/loading.gif" alt="Bezig met laden" class="loading" />'; var $loading = '<div class="ui-state-highlight ui-corner-all"><p><img src="images/loading.gif" alt="Bezig met laden" style="float: left; margin-right:10px;" />Een ogenblik geduld a.u.b.</p></div>'; // Tabs $("#tabs").tabs({ show: function() { $(".ui-tabs-selected").removeClass("ui-tabs-selected"); }, // Tab weer selectable maken. spinner: '', }); // Dialogs var $dialog = $('<div></div>') .dialog({ resizable: false, modal: true, autoOpen: false, width: 600, position: ['',140], buttons: { "Verstuur": function() { $('#output').html($loading); setTimeout(function() { $('#form').submit(); }, 1000); }, "Venster sluiten": function() { $(this).dialog('close'); } } }); // Dialog openen $('#footer a').click(function() { $dialog.html($preloader).load($(this).attr('href')); // Loading weergeven en content van dialog laden. $dialog.dialog('option', 'title', $(this).attr('title')).dialog('open'); // Titel aanpassen en dialog openen. return false; // Voorkomen dat de link geopend wordt. }); }); </script> |
Content/pagina1.php
HTML:
1
2
| <h1>Pagina 1</h1> <p><a href="dialogs.php?dialog=content_dialog" title="Titel van dialog" id="open_dialog_vanuit_tab_content">Link om dialog te openen</a></p> |
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| $(document).ready(function() { // Loading animatie aanmaken var $loading = '<div class="ui-state-highlight ui-corner-all"><p><img src="images/loading.gif" alt="Bezig met laden" style="float: left; margin-right:10px;" />Een ogenblik geduld a.u.b.</p></div>'; // Dialog template aanmaken var $dialog = $('<div></div>') .dialog({ resizable: false, modal: true, autoOpen: false, width: 600, position: ['',140], buttons: { "Verstuur": function() { $('#output').html($loading); setTimeout(function() { $('#form').submit(); }, 1000); }, "Venster sluiten": function() { $(this).dialog('close'); } } }); // Dialog openen $('#open_dialog_vanuit_tab_content').click(function() { $dialog.html('<img src="images/loading.gif" alt="Bezig met laden" class="loading" />').load($(this).attr('href')); // Loading weergeven en content van dialog laden. $dialog.dialog('option', 'title', $(this).attr('title')).dialog('open'); // Titel aanpassen en dialog openen. return false; // prevent the default action, e.g., following a link }); }); |
Dialogs.php
HTML:
1
2
3
4
5
6
| <form id="form" action="post.php?&type=feedback" method="post"> <div id="output"></div> <p>Dit is het feedbackformulier</p> <h3>Uw feedback</h3> <p><textarea name="feedback" cols="" rows="" class="tinymce"></textarea></p> </form> |
JavaScript:
1
2
3
4
5
6
| $(document).ready(function() { $('textarea.tinymce').tinymce({ script_url : 'js/tiny_mce/tiny_mce.js',theme : "simple",language : "nl" }); $('#form').bind('form-pre-serialize', function(e) { tinyMCE.triggerSave(); }); $('#form').ajaxForm({ target: '#output' }); }); |
Wanneer ik eerst op de link "Feedback" druk, wordt er netjes een Dialog geopend, de content (het feedbackformulier) wordt goed ingeladen en wanneer ik op Submit druk krijg ik ook een goede response van post.php. Als ik vervolgens op de link van "Contact" druk om een dialog te openen met daarin het contactformulier, dan werkt dat ook allemaal goed.
Wanneer ik een Dialog wil openen vanuit jQuery UI Tabs geladen content werkt dat ook allemaal (inclusief de post en response). Als ik direct daarna op Contact of Feedback druk,opent de dialog, wordt de content netjes geladen, maar wanneer ik dan op Submit druk krijg ik in de Firebug console venster de onderstaande error en geen response meer van post.php.
Error
uncaught exception: [Exception... "Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIDOMHTMLDocument.implementation]" nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: http://mijnsite.nl/ :: <TOP_LEVEL> :: line 0" data: no]
Line 0
Als de error eenmaal geweest is moet ik eerst een page refresh doen voordat een willekeurige dialog weer werkt.
Het probleem doet zich ook voor als ik eerst een dialog open vanuit de footer van index.php en daarna vanuit de in tabs geladen content. Ook doet het probleem zich voor wanneer ik tussen tabs wissel (dus 2x vanuit verschillende in tabs geladen content). Wanneer ik vanuit de in tabs geladen content 2x achter elkaar dezelfde dialog open gaat alles wel gewoon goed.
Ik ben nu al enkele dagen bezig om dit probleem op te lossen. Eerst liep ik tegen het probleem aan dat een dialog maar 1x geopend kan worden. Dat heb ik o.a. middels dit artikel en dit artikel deels kunnen verhelpen, maar ik blijf maar vastlopen op deze error
Ik hoop dat iemand mij hier een beetje op weg kan helpen, want ik heb werkelijk echt van alles al geprobeerd en kom er maar niet uit!
Bedankt alvast!