我希望一个接一个地打开多个jQuery对话框。但只有第一个打开。
Dlg 1 - 提出是/否问题。
Dlg 2 - 如果是,将单词“go”粘贴到隐藏字段id="frmtrig"
中,然后触发更改事件。捕获此事件时,它会运行AJAX以使用通过ajax成功函数接收的html填充$('#message')div,然后在对话框中显示该内容。
Dlg 3 - 关闭后,提出最后一个对话框。
下面的代码在第2步中断。alert('bonk')
甚至没有发生......
我还删除了alert('bonk')
和成功函数的结束}
之间的所有内容,并且仍未显示bonk警报。有人能用我的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';
}
答案 0 :(得分:1)
我已经在我的机器上试过你的代码了,它运行正常。
如果未打开第二个对话框,则表示未达到success
请求中的ajax
。
您确定问题不是来自错误的路径吗?
url: "ajax/ax_all_ajax_fns.php", // Check this path