javascript - 非常奇怪的 jQuery/AJAX 行为

标签 javascript jquery ajax alert

我对服务器进行了 Ajax 调用,该调用仅在我向服务器传递 alert(); 时才起作用。无法弄清楚出了什么问题。有人可以帮忙吗?

目标

  1. 如果在 PrettyPhoto iFrame 中单击“更新”按钮 - 则 (a) 调用服务器运行更新后端数据库的 PHP 脚本,(b) 关闭 PrettyPhoto 窗口,以及 (c) 刷新页面
  2. 如果在 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 回调中完成其余操作

参见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();
     }
 });

关于javascript - 非常奇怪的 jQuery/AJAX 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10056642/

相关文章:

javascript - 在应用程序框架中处理异步 Javascript 代码的最佳实践

javascript - 从服务器脚本快速刷新动态内容的 URI

javascript - 如何找到渗透路径并突出显示?

javascript - Ajax Post 请求 MVC

javascript - 在砖石博客存档页面的每张卡片中制作动画

jquery - 如何取消设置 jquery tab cookie?

c++ - 使用 C++/Qt4 应用程序作为 Web 应用程序的后端

javascript - 如何使用 DHTML 动态创建表单控件并使用 JSF 处理所有这些控件?

javascript - Firefox:如果 contenteditable 嵌套在可拖动父级中,则该内容不可编辑

javascript - 如何定义 Django View