2013-04-24 64 views
0

我使用下面的標籤,讓用戶喜歡的崗位如何使用HTML錨<a>發送AJAX POST請求

<a href="#" class="like" id="like_22">Like</a> 

我得到<a>的ID通過JavaScript這實際上是POST_ID和發送數據到like.php使用以下GET方法。

post_id = 22; 
xrequest.open("GET","like.php?post_id="+post_id+",true); 
xrequest.send(); 

我有兩個問題

  1. 我如何發送使用POST法這個要求嗎?
    (請注意,標籤周圍沒有任何<form>...</form>。)
  2. 如果我使用上述GET方法,它是否安全?

回答

5

既然你已經標記了jQuery,我假設你正在使用它。如果是這樣,你可以做到這一點,如:

// attach a click handler for all links with class "like" 
$('a.like').click(function() { 

    // use jQuery's $.post, to send the request 
    // the second argument is the request data 
    $.post('like.php', {post_id: this.id}, function(data) { 
     // data is what your server returns 
    }); 

    // prevent the link's default behavior 
    return false; 
}); 

關於你提到的第二個問題:沒有,它並沒有真正使其更安全,除非你是SSL內這樣做(HTTPS)。一箇中間人仍然可以在途中攔截你的信息並閱讀內容。 POST比GET更加間接(攔截並讀取負載),但不安全。

0

如果我正確理解你的問題,這樣的事情應該爲你工作:

$('#link_22').click(function(){ 
    var link = $(this).attr('id'); 
    $.post('/like.php/', {post_id: link}); 
    return false; 

}) 

然後你可以像來自PHP達到這一點:

$_POST['post_id']; 
1

使用POST發送像鏈接ID你可以做以下幾點:

$(document).ready(function() { 
    $("a.like").click(function(event) { 
     var data = event.target.id; 
     $.ajax({ 
     type: "POST", 
     url: "like.php", 
     data: data 
     }); 
    }); 
    }); 

更新,我的代碼中有一個錯字。