我一直在研究Like和不同功能與jQuery,ajax和PHP。我的問題有點難以理解。讓我們先試着理解它。 Jquery Post無法正常工作?
我有2個PHP頁面,
viewProfile.php
和
LikeMail.php
。
LikeMail.php
正在通過
viewProfile.php
中的ajax函數調用。
這裏是viewProfile.php頁的說明部分
-----------------
| Like/Unlike |
-----------------
這裏是按鈕,它實際上是由這個AJAX功能
function like()
{
var req = new XMLHttpRequest();
req.onreadystatechange = function()
{
if(req.readyState==4 && req.status==200)
{
document.getElementById('Like').innerHTML=req.responseText;
}
}
req.open('POST','LikeMail.php','true');
req.send();
}
setInterval(function(){like()},1000);
HTML來自LikeMail.php
:
<div id="Like"></div>
輸出在此處顯示在此div中。 上面的按鈕可能是Like
或Unlike
取決於LikeMail.php
中的條件,這將在以下LikeMail.php
說明部分中進行描述。
當他們中的一個(按鈕)Like
或Unlike
被點擊時。然後它調用各自的jquery點擊功能,發送post請求到LikeMail.php
。我已經提到Indirect
頁面的標題,因爲Like
或Unlike
按鈕實際上存在於LikeMail.php
頁面。但由於ajax調用這些按鈕正在顯示在viewProfile.php
頁面。所以,我再通過viewProfile.php
發送POST請求到實際的頁面LikeMail.php
這是jQuery的職位Unlike
按鈕
$(document).ready(function(){
$('#Unlike').unbind().click(function(){
$.post("LikeMail.php",
{Unlike: this.id},
function(data){
$('#response').html(data);
}
);
});
});
這是jQuery的崗位或Like
按鈕
$(document).ready(function(){
$('#Like').unbind().click(function(){
$.post("LikeMail.php",
{Like: this.id},
function(data){
$('#response').html(data);
}
);
});
});
描述的結束部分viewProfile.php
頁面
這裏是LikeMail.php頁的描述
Like
或
Unlike
按鈕被
viewProfile.php
頁所示的截面取決於此代碼:
$check_for_likes = mysqli_query($conn, "SELECT * FROM liked WHERE user1='$user1' AND user2='$user2'");
$numrows_likes = mysqli_num_rows($check_for_likes);
if (false == $numrows_likes) {
echo mysqli_error($conn);
}
if ($numrows_likes >= 1) {
echo '<input type="submit" name="Unlike" value="Unlike" id="Unlike" class="btn btn-lg btn-info edit">';
}
elseif ($numrows_likes == 0) {
echo '<input type="submit" name="Like" value="Like" id="Like" class="btn btn-lg btn-info edit">';
}
按鈕取決於上述這兩個條件。
現在,當點擊Like
按鈕,從viewProfile.php
post請求來這裏
if(isset($_POST['Like'])) //When Like button in viewProfile.php is clicked then this peace of code inside if condition should run and insert some record in database
{
$total_likes = $total_likes+1;
$like = mysqli_query($conn, "UPDATE user SET user_Likes = '$total_likes' WHERE user_id = '$user2'");
$user_likes = mysqli_query($conn, "INSERT INTO liked (user1,user2) VALUES ('$user1','$user2')");
$query3 = "INSERT INTO notification (user1, user2, alert, notificationType) VALUE ('$user1','$user2','unchecked','like')";
if (mysqli_query($conn, $query3)) {
echo "Like";
} else {
echo mysqli_error($conn);
}
}
同樣,當點擊Unlike
按鈕。代碼的和平應該運行。
if(isset($_POST['Unlike'])) //This is the condition for Unlike button. It should delete record from databse
{
$total_likes = $total_likes-2;
$like = mysqli_query($conn, "UPDATE user SET user_Likes='$total_likes' WHERE user_id='$user2'");
$remove_user = mysqli_query($conn, "DELETE FROM liked WHERE user1='$user1' AND user2='$user2'");
$query3 = "DELETE FROM notification WHERE user1='$user1' AND user2='$user2' AND notificationType='like'";
$check = mysqli_query($conn, $query3);
if ($check) {
echo "Unlike";
} else {
echo mysqli_error($conn);
}
}
問題:
我所面臨的主要問題是,當我點擊Like
或Unlike
二者執行的Like
按鈕的代碼的條件。兩者都將數據插入數據庫中作爲Unlike
條件應該從數據庫中刪除數據,但它也會按照Like
按鈕的條件插入數據。請你幫我解決這個問題。提前致謝!
更新:
當我刪除Like
按鈕的所有代碼。 Unlike
按鈕的條件開始正常工作。
總結到人們可以輕鬆地集中主要問題 – kollein
@kollein綜述後'Problem'標題 –
需要跟蹤您的變量來描述檢查它們是否損壞,或者最終狀況是否有誤。在PHP端使用和濫用'print_r()'和'error_log()',在javascript上使用'alert()'或'console.log()'。 – technico