我哪里错了 - ajax

时间:2010-07-15 16:50:50

标签: php javascript ajax jquery

我有以下链接 -

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

我已经像这样初始化了$ var3

$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 个答案:

答案 0 :(得分:1)

同意您之前的回答,即您正在执行异步Ajax请求。 从文档中Async参数可能无法在两种情况下工作:跨域请求或dataType:“jsonp”。 如果您正在进行跨域请求,我只能建议:

<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;
});

通过这种方法,我们可以确保跟踪点击。 这种方法还有另一个问题,即跟踪服务器应该很快,否则用户将等待很长时间直到导航到资源。

答案 1 :(得分:0)

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

尝试在ajax函数的参数中添加async: false以等待结果在继续之前返回,如下所示:

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

答案 2 :(得分:0)

您正在向JS函数传递两个参数。但功能原型(第一行)只接受一个。这导致JS错误。