2013-05-18 108 views
3

我是一個「第一次計時器」和「自學成才」,但在研究無數其他問題時發現了stackoverflow是無價的,但是我在這個問題上受到了阻礙。我相信解決方案很簡單,可以通過多種方式進行處理。道歉,如果我沒有正確格式化或提出問題。JQuery單擊事件不傳遞變量到一個post請求

HTML

<div id="message"> 
    <a id="date" href="ajax1.php?postreply=1368479602">Topic</a> 
    </div> 

JQuery的

ahref=""; 
timestamp=""; 
time=""; 

$(document).ready(function(){ 

$('a').click(function(){ 
    ahref = $(this).attr('href'); 
    timestamp = ahref.split('='); 
    time = timestamp[1]; 

    alert(time); //this works  
}) 

alert(time) //this does not work 

$.post('ajaxpost.php', {'timestamp' : time} , function(result) {; 
    alert(result); 
    }) 
}) 


</script> 

我能夠HREF解析成一個陣列並與陣列到時間變量中設定的第二值,但是我不能傳遞變量到發佈請求。發佈請求可以工作,但只有當我在click事件之外設置變量時纔有效。我在這裏研究了其他的帖子,我認爲答案是使用全局變量,即使我現在明白這不是好的做法,但這似乎並不是解決方案,儘管也許我沒有正確地聲明變量。

回答

0

如果使用click函數綁定錨點標記並使其更正爲正確的json數據對象,則必須防止錨點標記的默認功能。 json鍵沒有引用單引號或雙引號。

確切的解決方案是

$(document).ready(function(){ 

$('a').click(function(e){ 
    e.preventDefault(); 
    var ahref = $(this).attr('href'); 
    var timestamp = ahref.split('='); 
    var time = timestamp[1]; 

    alert(time); //this works  
    $.post('ajaxpost.php', {timestamp : time} 
      , function(result) { 
     alert(result); 
    }); 
}); 

}); 
+0

謝謝,這個工作。 – user2232681

+0

爲什麼你不接受SO上的正確答案。 –

+0

你走了 - 以爲我做到了。 – user2232681

1

移動Ajax請求的Click事件中..

$(document).ready(function() { 

    $('a').click(function() { 
     ahref = $(this).attr('href'); 
     timestamp = ahref.split('='); 
     time = timestamp[1]; 
     $.post('ajaxpost.php', { 
      'timestamp': time 
     }, function (result) {; 
      alert(result); 
     }) 
    }) 
    alert(time); //this works  
}) 

不工作運行警報,當頁面加載的第一次時,它是空的。但是,當您單擊事件被觸發時,您正在爲其分配值。

因此,您需要將請求移至Click事件中,以便將正確的時間值傳遞給請求。

1

它爲什麼會起作用?點擊事件處理程序僅在調用時設置time。它綁定後不會被調用。

將取決於該變量在回調代碼:

$(document).ready(function() { 
    $('a').click(function() { 
     var timestamp = this.href.split('='); 
     var time = timestamp[1]; 

     $.post('ajaxpost.php', { 
      'timestamp': time 
     }, function(result) { 
      alert(result); 
     }); 
    }); 
}); 

同時,應注意與省略var。在沒有var的情況下聲明的JavaScript變量會自動綁定到全局範圍,這很少是您想要的,並且可能會導致問題。