Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 非常奇怪的jQuery/AJAX行为_Javascript_Jquery_Ajax_Alert - Fatal编程技术网

Javascript 非常奇怪的jQuery/AJAX行为

Javascript 非常奇怪的jQuery/AJAX行为,javascript,jquery,ajax,alert,Javascript,Jquery,Ajax,Alert,我有一个对服务器的Ajax调用,只有在我传递alert()时才起作用到它。不知道出了什么问题。有人能帮忙吗 客观的 若在PrettyTo iFrame中单击“更新”按钮,那个么(a)调用服务器来运行更新后端数据库的PHP脚本,(b)关闭PrettyTo窗口,以及(c)刷新页面 如果在PrettyTo iFrame中单击“不更新”按钮,只需(a)关闭PrettyTo窗口,以及(b)刷新页面即可 这不起作用(即,没有对服务器进行Ajax调用): jQuery.support.cors = true;

我有一个对服务器的Ajax调用,只有在我传递
alert()时才起作用到它。不知道出了什么问题。有人能帮忙吗

客观的

  • 若在PrettyTo iFrame中单击“更新”按钮,那个么(a)调用服务器来运行更新后端数据库的PHP脚本,(b)关闭PrettyTo窗口,以及(c)刷新页面
  • 如果在PrettyTo iFrame中单击“不更新”按钮,只需(a)关闭PrettyTo窗口,以及(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
    
    });
    
    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
    
    });
    
    这很有效!(即,当我有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
    
    });
    
    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
    
    });
    
    谢谢

    根据答案做了大量修改,但仍然无法使其生效。以下是最新消息:

    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
    
    });
    
    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') {
            $.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();
         }
     });
    

    您需要在Ajax回调中完成其余的工作

    您也可以只获取数据:

    $('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();
         }
     });
    

    AJAX是异步的。
    $.ajax()
    调用将启动对服务器的请求,然后脚本的其余部分将继续执行,即使请求正在返回服务器

    alert()用于“减慢”或暂停代码的其余部分,从而允许ajax请求完成

    您需要做的是:

    $.ajax({
        url: '....';
        success: someFunction;
    });
    

    当ajax调用成功时,它将调用
    someFunction()
    ,这是您执行.location.href操作的地方。

    ajax是异步的。
    $.ajax()
    调用将启动对服务器的请求,然后脚本的其余部分将继续执行,即使请求正在返回服务器

    alert()用于“减慢”或暂停代码的其余部分,从而允许ajax请求完成

    您需要做的是:

    $.ajax({
        url: '....';
        success: someFunction;
    });
    
    当ajax调用成功时,它将调用
    someFunction()
    ,您可以在这里执行.location.href操作。

    您可以尝试以下操作:

    $('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
        }
    });
    
    您可以尝试以下方法:

    $('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
        }
    });
    


    不知道你的意思是什么,我明白了。谢谢你修改的剧本。谢谢你!!.ajax()和.get()@mplungjan之间有什么区别?我需要做的就是调用服务器端php脚本。在我的特殊情况下,一种方法比另一种更好吗?我尝试了你的答案@mplungjan…无法让它工作,我不断修改它,试图成功关闭()并重定向。但它只关闭并重定向whet status='N'$。get比$.ajax简单得多。仅此而已。如果您不需要所有的错误处理,那么,$.get就是fine。我不确定@mplungjanAh是什么意思,我明白了@mplungjan。谢谢你修改的剧本。谢谢你!!.ajax()和.get()@mplungjan之间有什么区别?我需要做的就是调用服务器端php脚本。在我的特殊情况下,一种方法比另一种更好吗?我尝试了你的答案@mplungjan…无法让它工作,我不断修改它,试图成功关闭()并重定向。但它只关闭并重定向whet status='N'$。get比$.ajax简单得多。仅此而已。如果您不需要所有的错误处理,那么,$.get就很好了,jQuery是从一个表单执行evkked
    onChange
    。因此,如果status的val=='N',脚本将失败,关闭和重定向将正常工作。如果status='Y',则除了ajax调用之外,脚本可以工作。( thanks@MarcB)我只想在status='Y'时启动ajax调用,然后执行close()和redirect()。我尝试了您的答案@MarcB…无法让它工作,我一直在修改它,试图成功地完成close()和redirect()。但是它只关闭并重定向whet status='N'jQuery是从一个表单执行的evkked
    onChange
    。因此,如果status的val=='N',脚本将失败,关闭和重定向将正常工作。如果status='Y',则除了ajax调用之外,脚本可以工作。( thanks@MarcB)我只想在status='Y'时启动ajax调用,然后执行close()和redirect()。我尝试了您的答案@MarcB…无法让它工作,我一直在修改它,试图成功地完成close()和redirect()。但是它只会关闭并重定向whet status='N'我尝试了你的答案@chase…无法让它工作我一直在修改它,试图成功关闭()并重定向。但是它只关闭并重定向whet status='N'Dot:我想脚本是正确的,但是我在url初始化时使用了(;)而不是(,)。请修复它,然后再试一次。我确实使用了逗号@Charsee。谢谢。您正在从服务器返回一些针对这个ajax callNo@Charsee的响应——这是没有必要的。我只是使用ajax调用启动一个更新后端数据库的服务器端php脚本。这就是它所做的。我尝试了你的答案@chase…无法让它工作,我不断修改它,试图成功关闭()并重定向。但是它只关闭并重定向whet status='N'Dot:我想脚本是正确的,但是我在url初始化时使用了(;)而不是(,)。请修复它,然后再试一次。我确实使用了逗号@Charsee。谢谢。您正在从服务器返回一些针对这个ajax callNo@Charsee的响应——这是没有必要的。我只是使用ajax调用启动一个更新后端数据库的服务器端php脚本。这就是它的全部功能。最新的不起作用。您必须将关闭和位置更改移动到successI所做的(@mplungjan)中,它既没有关闭也没有重定向。但是后端数据库被ajax调用更新了…最新的将不起作用。您必须将关闭和位置更改移动到successI所做的(@mplungjan)中,它既没有关闭也没有重定向。但是后端数据库被ajax调用更新了。。。