2010-07-15 48 views
0

我有以下鏈路我要去哪裏錯了 - 阿賈克斯

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

.... some more code ... ... at end ...

return true; 
} 
</script> 

現在,當我點擊鏈接ex.com打開沒有任何警報,即沒有通過AJAX和JavaScript後運行PHP腳本。如果我從函數popitup2()中刪除了ajax調用,那麼剩下的JavaScript會被正確執行。

回答

1

同意以前回答您正在執行異步Ajax請求。 來自文檔異步參數在兩種情況下可能不起作用:跨域請求或數據類型:「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; 
}); 

隨着我們跟蹤一下肯定這種做法。 這種方法還有另外一個問題,那就是跟蹤服務器應該很快,否則用戶將等待很長時間才導航到資源。

0

這裏發生的是你正在執行一個異步AJAX請求,這意味着當你執行請求時,你的函數的其餘部分會繼續運行。當AJAX結果返回時,它會在您的success函數中觸發alert,但由於您點擊了鏈接,因此您已經從該頁面導航。

嘗試添加async: false給Ajax功能的參數,以等待結果回來繼續之前,像這樣:

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

加入異步參數沒有幫助。仍然是同樣的事情。它只是遷移到其他頁面而不運行任何腳本。 – ayush 2010-07-15 17:05:07

0

你傳入兩個參數JS功能。但函數原型(第一行)只接受一個。這導致了JS錯誤。

+0

var3只是一個初始化爲「sometext,sometext」值的單個變量。這是一個單一的變量。 – ayush 2010-07-15 17:03:23