2017-10-20 258 views
0

I'have和AJAX POST請求:AJAX後和頁面刷新

$(document).ready(function() { 
    $("span").click(function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    var URL = "someURL"; 
    $.post(URL, this.id, function(data, status) { 
     var val = parseInt(document.getElementById(this.data).innerHTML) 
     document.getElementById(id).innerHTML = val + 1 ; 
     document.getElementById(id).disabled=true; 
    }); 
    }); 
}); 
<a href="/book/test/1">Read</a> 
<span id="${book.id}"> 

這個腳本工作正常;數字在其中的按鈕增加1。 問題是:

  • 刷新頁面。在按鈕上單擊它將重新加載頁面上的所有內容。
  • 我不能改變

總之我需要一個計數按鈕,增加1,可以按用戶一旦改變之後禁用按鈕。

更新似乎重新加載它的相關定義爲

$(document).ready(function() {

所以我有一個在體內,一個在頭另一功能。

+1

在跨度的點擊處理程序中調用'$(this).off('click')'來阻止用戶再次單擊它。您的示例中沒有任何內容會導致頁面重新加載,因此我們無法提供任何幫助。 –

+0

我會試一試。也許不是頁面重新加載,但只有js的功能。我讀過的內容可能是由於js中的問題。我試圖添加JSFiddle而沒有成功 – Vanko

+0

那麼'id'是什麼? – epascarello

回答

1

當然,它刷新頁面,你發送一個鏈接去通過href。相反,刪除href,並放置一個onclick事件和處理程序。替換你的錨標記,用這個:

<a onclick="runFunction()">Read</a> 

並用此替換你的腳本。

<script> 
function runFunction(){ 
$(document).ready(function(){ 
    $("span").click(function(e){ 
     e.preventDefault(); 
     e.stopPropagation(); 
     var URL="someURL"; 
     $.post(URL, 
     this.id, 
     function(data,status){ 
      var val = parseInt(document.getElementById(this.data).innerHTML) 
      document.getElementById(id).innerHTML = val + 1 ; 
      document.getElementById(id).disabled=true; 
     }); 
    }); 
}); 
} 
</script> 
+0

OP將事件處理程序附加到「span」,而不是「a」。你的示例中的'runFunction()'將附加事件處理程序,但它只會對連續的點擊執行任何實際工作,但會重複該點擊處理程序。如果你想這樣做,我建議使用一個不引人注目的事件處理程序。 –