我希望一个接一个地打开多个 jQuery 对话框。但只有第一个打开。
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';
}