代码之家  ›  专栏  ›  技术社区  ›  ayush

我哪里做错了-阿贾克斯

  •  0
  • ayush  · 技术社区  · 15 年前

    <a href="ex.com" onClick="return popitup2('<?php echo $var3; ?>');">Grab Coupon</a>
    

    $var3 = "brand1,camp2";
    

    函数popitup2()的代码是-

    <script language="javascript" type="text/javascript">
    function popitup2(id) {
    $.ajax({
       url: "http://jainkunal.com/wordpress/wp-content/trackclicks/clickcounter.php"+"?"+id,
       success: function(){
         alert( "Data Saved: " );
       }
     });
        newwindow2=window.open('','name','height=225,width=350');   
    var tmp = newwindow2.document;
    

    ……更多的代码。。。 …最后。。。

        return true;
    }
    </script>
    

    现在,当我点击链接ex.com打开时,没有任何警报,即没有通过ajax和javascript运行php脚本。如果我从函数popitup2()中删除ajax调用,那么剩余的javascript将正确执行。

    3 回复  |  直到 15 年前
        1
  •  1
  •   xplanner expert    15 年前

    同意前面的回答,即您正在执行异步Ajax请求。 如果您正在进行跨域请求,我只能建议:

    <a href="ex.com" onClick="return popitup2('<?php echo $var3; ?>', this);">Grab Coupon</a>
    <script type="text/javascript">
    function popitup2(id, link) {
      $.ajax({
        url: "http://jainkunal.com/wordpress/wp-content/trackclicks/clickcounter.php"+"?"+id,
        context: link,
        success: function(){
          alert( "Data Saved: " );
          window.location = $(this).attr("href");
       }
      ....
      return false;
    });
    

    通过这种方法,我们可以肯定地跟踪点击。 这种方法还有一个问题,就是跟踪服务器的速度要快,否则用户要等很长时间才能找到资源。

        2
  •  0
  •   Timothy S. Van Haren Prashant    15 年前

    这里发生的事情是,您正在执行一个异步AJAX请求,这意味着当您执行请求时,其余的函数将继续运行。当AJAX结果返回时,它触发 alert 在你的 success 功能,但由于您单击了一个链接,因此您已经离开了该页。

    尝试添加 async: false 返回ajax函数的参数,等待返回结果后再继续,如下所示:

    $.ajax({
        url: "http://jainkunal.com/wordpress/wp-content/trackclicks/clickcounter.php"+"?"+id,
        async: false,
        success: function() {
           alert( "Data Saved: ");
        }
     });
    
        3
  •  0
  •   srigi    15 年前