2016-06-09 12 views
0

Ich arbeite mit einem Skript, in dem ich ein Formular ohne Seitenaktualisierung mit Hilfe von AJAX senden sollte. Das Problem besteht darin, dass das Formular nicht an die Datenbank gesendet wird. Jede Hilfe wäre willkommen. Ich hatte mich mit den Codes beschäftigt, aber nichts funktioniert für mich.AJAX nicht einreichen

Hier wird der JavaScript-Code ist:

<script type="text/javascript"> 
    setInterval(function() { 
     $('#frame').load('chatitems.php'); 
    }, 1); 
    $(function() { 
     $(".submit_button").click(function() { 
      var textcontent = $("#content").val(); 
      var usercontent = $("#username").val(); 
      var namecontent = $("#nickname").val(); 
      var dataString = 'content=' + textcontent; 
      var userString = 'content=' + usercontent; 
      var nameString = 'content=' + namecontent; 

      if (textcontent == '') { 
       alert("Enter some text.."); 
       $("#content").focus(); 
      } else { 
       $("#flash").show(); 
       $("#flash").fadeIn(400).html('<span class="load">Loading..</span>'); 
       $.ajax({ 
        type: "POST", 
        url: "chatitems.php", 
        data: { 
         dataString, 
         userString, 
         nameString 
        }, 
        cache: true, 
        success: function(html) { 
         $("#show").after(html); 
         document.getElementById('content').value = ''; 
         $("#flash").hide(); 
         $("#frame").focus(); 
        } 
       }); 
      } 
      return false; 
     }); 
    }); 
</script> 

dies meine Form ist:

<form action="" method="post" name="form"> 
    <input type="hidden" class="form-control" id="username" name="username" value="<?php echo $username; ?>" readOnly /> 
    <input type="hidden" class="form-control" id="nickname" name="nickname" value="<?php echo $nickname; ?>" readOnly /> 
    <input type="hidden" class="form-control" id="chat_role" name="chat_role" value="<?php echo $pm_chat; ?>" readOnly /> 
    <input type="hidden" class="form-control" id="team" name="team" value="<?php echo $manager; ?>'s Team" readOnly /> 
    <input type="hidden" class="form-control" id="avatar" name="avatar" value="<?php echo $avatar; ?>" readOnly /> 
    <div class="input-group"> 
     <input type="text" class="form-control" id="content" name="content" /> 
     <span class="input-group-btn"> 
      <input type="submit" name="submit" class="submit_button btn btn-primary" value="Post"></input> 
     </span> 
    </div> 
</form> 

und schließlich ist das mein PHP-Code:

<?php 
include('db.php'); 
$check = mysql_query("SELECT * FROM chat order by date desc"); 
if(isset($_POST['content'])) 
{ 
    $content=mysql_real_escape_string($_POST['content']); 
    $nickname=mysql_real_escape_string($_POST['nickname']); 
    $username=mysql_real_escape_string($_POST['username']); 
    $ip=mysql_real_escape_string($_SERVER['REMOTE_ADDR']); 
    mysql_query("insert into chat(message,ip,username,nickname) values ('$content','$ip','$username','$nickname')"); 
} 

$req = mysql_query('select * from chat ORDER BY date desc'); 
while($dnn = mysql_fetch_array($req)) 
{ 
    ?> 
    <div class="showbox"> 
    <p><?php echo $dnn['username']; ?> (<?php echo $dnn['ip']; ?>): <?php echo $dnn['message']; ?></p> 
    </div> 
    <?php 
} 
?> 

Ich weiß, es ist etwas, falsch mit meinem Code irgendwo, aber hatte schon einige Tage, aber ohne Erfolg. Ich hoffe, dass jemand helfen würde.

UPDATE Das Formular mit diesem Code wurde erfolgreich abgegeben nur data: dataString wird, aber wenn ich die nameString und die userString das ist, wenn alles nicht funktioniert, wie es sollte hinzugefügt. Ich habe versucht, diesen Code zu durchforsten, aber ich habe immer noch nichts.

+1

Diese 'Daten: {DataString, UserString, NameString}' ist ein Problem. Sie wollen entweder ein Array oder ein Objekt, in diesem Fall ist das Format falsch – Guillaume

+0

Ich habe auch versucht, Daten: {DataString, Benutzername = "Benutzername", Nickname = "Spitzname"} 'aber immer noch nicht funktioniert. Hast du die Codes korrigiert, die ich ausprobieren kann? – crozland23

+0

was ich meine ist, sollten Sie Array-Notation wie folgt verwenden: 'Daten: [DataString, UserString, NameString]' – Guillaume

Antwort

0

Um herauszufinden, was mit diesem falsch ist, müssen Sie das etablieren:

a) Das Click-Ereignis feuert, die Sie durch das Hinzufügen einer console.log('something'); an der Spitze dieser Funktion testen konnte.

b) Die AJAX-Funktion funktioniert etwas korrekt, was Sie wiederum überprüfen könnten, indem Sie console.log() in den Erfolg Rückruf der AJAX-Anfrage hinzufügen. Sie können auch Konsole auf Fehler überprüfen, z wenn der chatitems.php ist 404'ing

c) dass alle Daten, die Sie aus dem DOM sind das Sammeln z var textcontent = $("#content").val(); enthält, was Sie erwartet, dass es zu. Wieder console.log().

d) dass die Seite, die Sie aufrufen erfolgreich die Daten verarbeitet Sie senden über, so die() ein print_r() der $_POST Werte, um die Daten zu überprüfen, es ist im Format empfängt Ihre erwartete. Sie müssen auch eine Fehlerbehandlung zu Ihrem MySQL-Code hinzufügen: https://secure.php.net/manual/en/function.mysql-error.php (oder besser noch PDO oder MySQLi https://secure.php.net/manual/en/book.pdo.php), die Ihnen sagen wird, ob etwas mit Ihrem MySQL-Code nicht stimmt. Sie können die Rückkehr Ihres AJAX-Anrufs (der alle Fehler enthalten würde) durch console.log(html) in Ihrem Erfolgsrückruf überprüfen.

Informationen, die Sie aus den obigen Informationen sammeln, führen Sie zu Ihrem Fehler.

0

Wenn ich richtig verstehe, scheint es, Sie versuchen, Ereignis zu binden, bevor die Schaltfläche verfügbar ist. Versuchen Sie (abhängig von der Version von JQuery, die Sie verwenden):

$(document).on('click, '.submit_button', function(){ 
    ... 
});