我对服务器进行了Ajax调用,只有在我向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()
});
}
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
});
答案 0 :(得分:2)
您需要在Ajax回调中完成剩下的工作
请参阅jquery 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();
}
});
答案 1 :(得分:2)
AJAX是异步的。 $.ajax()
调用将向服务器发起请求,然后即使请求在飞行中返回服务器,脚本的其余部分也将继续执行。
alert()用于“减慢”/暂停其余代码,允许完成ajax请求。
您需要做的是:
$.ajax({
url: '....';
success: someFunction;
});
当ajax调用成功时,它会调用someFunction()
,这是你做.location.href的东西。
答案 2 :(得分:1)
你可以试试这个:
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: '....',
success: function(data) {
window.parent.closePP();
window.top.location.href = $('#redirect').val();
}
});
}
else{
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
}
});