我对服务器进行了 Ajax 调用,该调用仅在我向服务器传递 alert();
时才起作用。无法弄清楚出了什么问题。有人可以帮忙吗?
目标
- 如果在 PrettyPhoto iFrame 中单击“更新”按钮 - 则 (a) 调用服务器运行更新后端数据库的 PHP 脚本,(b) 关闭 PrettyPhoto 窗口,以及 (c) 刷新页面
- 如果在 PrettyPhoto iFrame 中点击“不更新”按钮 - 只需 (a) 关闭 PrettyPhoto 窗口,然后 (b) 刷新页面
这不起作用(即,无法对服务器进行 Ajax 调用):
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val()
});
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
这有效! (即,当我有alert()存在时,对服务器进行Ajax调用):
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val()
});
alert('this makes it work');
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
谢谢。
根据答案进行了多次修改 - 仍然无法使其发挥作用。这是最新的:
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val(),
success: functions(data) {var $doNothing = data;}
});
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
最佳答案
您需要在 Ajax 回调中完成其余操作
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val()
},
success:function() {
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
}
else {
window.parent.closePP();
}
});
您也可以只获取数据:
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.get('http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val(),
function() {
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
}
else {
window.parent.closePP();
}
});
关于javascript - 非常奇怪的 jQuery/AJAX 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10056642/