2017-11-10 3 views
0

Hey Ich habe ein Formular mit zwei Senden Tasten und eine einfache Texteingabe. Ich möchte, dass das Formular von Ajax eingereicht wird (ich habe herausgefunden, wie das geht).Zwei Tasten Formular Vorlage mit AJAX

Form:

<form method='post' action='likesystem.php' id='7'> 
<input class='form-control' type='hidden' value='7' name='postid'> 

<button type='submit' class='btn btn-success btn-sm' name='poslike' value='liking'>Like this</button> 
<button type='submit' class='btn btn-danger btn-sm' name='poslike' value='disliking'>Dislike this</button> 

das Skript wie folgt:

<script> 
$('#7').on('submit', function(event) { 
event.preventDefault(); 

$.ajax({ 
    url: 'likesystem.php', 
    type: 'POST', 
    data: $('#7').serialize(), 

}); 
}); 
</script> 

die PHP-Seite:

<?php  

require_once 'config.php'; 

     $link = mysqli_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD, $DB_NAME); 

     if(! $link) { 
      die('Could not connect: ' . mysql_error()); 
      echo "Connection Error"; 
     } 

if($_SERVER["REQUEST_METHOD"] == "POST") { 
$postid = $_POST['postid']; 


switch($_POST['poslike']) { 
    case 'liking': 
     $sql = "UPDATE posts SET poslike = poslike + 1 WHERE id = $postid"; 

    case 'disliking': 
     $sql = "UPDATE posts SET dislike = dislike + 1 WHERE id = $postid"; 

} 

if (mysqli_query($link, $sql)) { 
      echo "You did something"; 
     } else { 
      echo "There was an error"; 
     } 

mysqli_close($link); 
} 

Was ich m Ich mache hier falsch? Ich habe mehrere Seiten überprüft, aber die Antworten dort könnten helfen und deshalb frage ich sie jetzt hier.

+0

Was haben Sie erwartet, vs, was du hast? – cHao

+0

Sie sollten AJAX-Ereignisse mit 'succes/error' Callbacks (oder' done()/fail() ') auslösen, Ihr' switch' ist falsch, '$ _SERVER [" REQUEST_METHOD "]' ist nutzlos ..... Lesen ein Tutorial und wiederholen, weil es für jetzt sehr chaotisch ist – pirs

+0

@cHao Ich erwartete die Datenbank zu ändern, aber das ist nicht passiert. –

Antwort

1

Um dies zu ändern Ihre Form:

<form method='post' action='likesystem.php' id='7'> 
    <input class='form-control' type='hidden' value='7' name='postid' id='postid'> 

    <button type='submit' class='btn btn-success btn-sm vote' name='poslike' value='liking'>Like this</button> 
    <button type='submit' class='btn btn-danger btn-sm vote' name='poslike' value='disliking'>Dislike this</button> 

</form> 

und versuchen, diesen Code für Skript:

<script> 
    $('.vote').on('click', function(event) { 
     event.preventDefault(); 
     var postid = $('#postid').val(); 
     var poslike = $(this).attr('value'); 
     $.ajax({ 
      url: 'likesystem.php', 
      type: 'POST', 
      data: 'postid=' + postid + '&poslike=' + poslike, 
     }); 
    }); 
</script> 
+0

Manchmal sendet es die Anfrage einmal, manchmal zweimal oder sogar vier Mal, warum tut es das? ? @JayBlanchard –

+0

Willst du bitte genauer werden, was bekommst du in der POST auf deiner Aktionsseite 'likesystem.php'? @D. Krold –