0

我希望一个接一个地打开多个 jQuery 对话框。但只有第一个打开。

jsFiddle

Dlg 1 -- 提出一个是/否的问题。

Dlg 2 -- 如果是,将“go”这个词粘贴到隐藏字段中id="frmtrig",然后触发更改事件。当这个事件被捕获时,它运行 AJAX 以使用通过 ajax 成功函数接收到的 html 填充 $('#message') div,然后在对话框中显示它。

Dlg 3 -- 关闭后,呈现最后一个对话框。

下面的代码在第 2 步中断。alert('bonk')甚至没有发生......

我还删除了成功功能alert('bonk')关闭之间的所有内容},但仍然没有显示bonk alert。谁能发现我的 AJAX 代码有问题?

奇怪的是,我已经做了很多(相对简单的)AJAX,所以我很困惑我被困在这里。 请注意,可能需要将我的代码块复制/粘贴到您自己的服务器上的两个或三个文件中以进行测试,因为 jsFiddle 不适用于 AJAX 故障排除。

我一直没有成功找到这样做的例子,过去两天我自己的努力也没有奏效。

HTML

    <div id="hot_link">Hover over this line to begin it all</div>
    <div id="message"></div>
    <div id="alert"></div>
    <input type="hidden" id="frmtrig">

JAVASCRIPT

$(function(){

    var cnt = 0;
    var ans = 0;
    var seen = 0;
    var dlg = $('#message');

    dlg.dialog({
        title: '"The Big Test',
        autoOpen:false,
        modal:true,
        width: 500,
        close: function() {
            if (seen==0 && ans > 0) {
                cnt++;
                seen++;
                dlg.dialog('open');
            }
        }
    });

    $('#hot_link').hover(
        function() {
            //Hover-in
            if (cnt < 1 || (cnt % 3 == 0)) {
                var msg = '<p>If you say NO, the Dialog will just close. If you press YES, an AJAX call will happen.</p>';
                dlg.html(msg);
                dlg.dialog(
                    'option',
                    'buttons',
                        [{
                            text: 'Download',
                            click: function() {
                                ans++;
                                //seen = 5;
                                $('#frmtrig').val('go').change();
                                $(this).dialog('close');
                            }
                        },
                        {
                            text: 'Not now',
                            click: function() {
                                ans = 0;
                                $(this).dialog('close');
                            }
                        }]
                );
                dlg.dialog('open');
                //alert('hi');
            }
            cnt++;
        },
        function() {
            //Hover-out
            //need this one to prevent duplicating hover-in code
        }
    );

    $('#frmtrig').change(function() {
    alert('boink');
            $.ajax({
                type: "POST",
                async: false,
                url: "ajax/ax_all_ajax_fns.php",
                data: 'request=freegive_99',
                success:function(data){
alert('bonk');
alert(data);
                    var dlg = $('#message');
alert('me be here');
                    dlg.html(data);
                    dlg.dialog(
                        'option',
                        'buttons',
                            [{
                                text: 'OK',
                                click: function() {
                                    $(this).dialog('close');
                                }
                            }]
                    );
                    dlg.dialog('open');
                }
            });
    });

}); //END document.ready

AX_ALL_AJAX_FNS.PHP

    if ($_POST['request'] == 'freegive_99') {
        echo 'THIS_LINE_WORKS';
    }
4

1 回答 1

1

我已经在我的机器上尝试了你的代码,它工作正常。

如果第二个对话框没有打开,这意味着success你的ajax请求没有达到。

您确定问题不是来自错误的路径吗?

url: "ajax/ax_all_ajax_fns.php", // Check this path
于 2013-06-10T23:08:35.343 回答