Ajax вызывает виджеты в JQuery Dashboard - PullRequest
0 голосов
/ 23 сентября 2011

Я использую плагин JQuery Dashboard для отображения информации таблицы MySql. У меня есть в этих виджетах кнопки для каждого результата MySQL для отображения формы. Кнопка выполняет вызов ajax для передачи идентификатора формы, а затем извлекает информацию о стилизованной форме, которая будет отображаться в диалоговом окне jQuery. Проблема заключается в том, что при первом посещении панели инструментов и попытке нажать кнопку требуется несколько щелчков мышью для извлечения формы. У меня есть несколько виджетов на приборной панели, которые используют эту технику (3, если быть точным), и так получилось, что за 2 щелчка мыши перед тем, как 3-й вернет форму. Может ли это быть из-за экземпляров кнопок в разных виджетах? Я так и думал, и в результате сделал разные классы для каждой кнопки с одинаковым кодом ajax. Проблема, однако, сохраняется. Это чрезвычайно раздражающая ошибка, которую я НЕ МОЖУ выяснить, и я пытался в течение 4 ДНЕЙ только на этой 1 ошибке. Ниже мой код Ajax:

$(".view_all").click(function(){ var form_id = $(this).attr("id"); $.ajax({ type: "GET", url: "form.php", data: "fid="+form_id, beforeSend: function(){ $("#loading").show(); }, success: function(msg){ $("#pop_container").html(msg); $("#pop_container").dialog({ autoOpen: false, height: 750, width: 950, modal: true, closeOnEscape: false }); $("#pop_container").dialog("open"); $("#loading").hide();<br> } }); return false; });

Приношу свои извинения за неправильный формат кода. Я пытался, но это не сработало.

В любом случае, любая помощь по этому вопросу была бы чрезвычайно полезной. Спасибо!

1 Ответ

0 голосов
/ 28 сентября 2011

Как я уже говорил, живой пример помог бы, но я все же взглянул на этот код, и все выглядело довольно хорошо, если предположить, что ваши ajax-вызовы всегда возвращают то, что должны возвращаться (вы проверяли с помощью firebug или еще чего-нибудь? ). Вы должны поместить этот фрагмент своего кода в функцию dom ready:

                $("#pop_container").dialog({ 
                    autoOpen: false, 
                    height: 750, 
                    width: 950, 
                    modal: true, 
                    closeOnEscape: false 
                }); 

Вместо установки этого в обратном вызове. Так что вам просто нужно вызвать $ ('# pop_container'). Dialog ('open'); в обратном вызове. Теперь, если этого недостаточно, и этого не должно быть достаточно, вы можете вручную инициировать щелчок в jQuery ($ ('. View_all'). Trigger ('click')), но это не совсем "чисто". Не знаю, поможет ли это, но я не смогу сделать больше, не полностью понимая, что происходит: P

...