2017-10-21 81 views
1

J'essaie d'implémenter un système de messagerie dans mon projet en utilisant AJAX, mais j'ai quelques problèmes parce que je suis nouveau à AJAX. Le code ci-dessous est capable d'envoyer les données d'entrée à partir du fichier MsgMain.php à MsgInsert.php parfaitement. Mais quand j'essaye d'obtenir $_POST['msgSend'] de MsgMain.php sur MsgInsert.php il échoue.Impossible d'identifier la valeur de l'élément de formulaire HTML en utilisant AJAX

AJAX code est sur MsgMain.php

$(document).ready(function(){ 
    $("#chatBtn").click(function(){ 
     $("#msgBtn").val("chat"); 
    }); 
    $("#pmBtn").click(function(){ 
     $("#msgBtn").val("pm"); 
    }); 
}); 
$(function() { 
    $("#msgBtn").click(function() { 
     var textcontent = $("#msgInput").val(); 
     var dataString = 'content='+ textcontent; 
     if(textcontent=='') 
     { 
      alert("Enter some text.."); 
      $("#msgInput").focus(); 
     } 
     else 
     { 
      $.ajax({ 
       type: "POST", 
       url: "msg/MsgInsert.php", 
       data: dataString, 
       cache: true, 
       success: function(response){ 
        document.getElementById('content').value=''; 
        $("#msgBtn").focus(); 
       } 
      }); 
     } 
     return false; 
    }); 
}); 

code du fichier MsgMain.php juste pour le formulaire HTML

<form action="MsgInsert.php" id="frmBox" name="msgSend" method="POST" onsubmit="return formSubmit();"> 
    <div class="input-group "> 
     <input type="text" class="form-control" name="msgBox" id="msgInput" title="Enter your message" required> 
     <div class="input-group-btn"> 
      <button class="btn btn-success w3-hover-white w3-hover-text-green" type="submit" id="msgBtn" title="Send your message" value="chat"><i class="glyphicon glyphicon-send"></i></button> 
     </div> 

    </div> 
</form> 

MsgInsert.php code de fichier, ce qui fonctionne bien lorsque je retire l'instruction if de $_POST['msgSend']

<?php 
if(!isset($_SESSION['login_user'])){ 
    header("location: ../index.php"); // Redirecting To Home Page 
} 
if (isset($_POST['content'])) { 
    if (isset($_POST['msgSend'])) { 
     $conn = mysqli_connect("localhost", "root", "", "msg"); 
     if (!$conn) { 
      die('Could not connect: ' . mysqli_error($conn)); 
     } 
     $content=$_POST['content']; 
     mysqli_query($conn, "INSERT INTO `msgpm`(`id`, `msgFrom`, `msgTo`, `msg`) VALUES ('','bob','ram','$content')"); 
    } 
} 
?> 

Désolé si ce type de question a déjà été posée.

+2

code indentation rend le code lisible –

+0

@JaromandaX Désolé pour le code long – Nawaraj

+1

long code est très bien ... mais le manque d'indentation rend le code difficile à lire - sûrement vous n'écrivez pas le code comme ça? –

Répondre

0

Vous n'êtes pas envoyaient l'attribut msgSent, selon cette ligne dans votre JS:

var dataString = 'content='+ textcontent; 

Je ne vois que la content que vous serez en mesure d'utiliser via $_POST['content'].

Essayez ceci:

var dataString = 'content='+ textcontent + '&msgSent' + '<?php echo $_POST['msgSent']; ?>'; 
0

Vous devez passer le msgSend paramètre en fonction de votre mise en œuvre de MsgInsert.php comme ceci:

$("#msgBtn").click(function() { 
    var textcontent = $("#msgInput").val(); 

    if (textcontent == '') { 
     alert("Enter some text.."); 
     $("#msgInput").focus(); 
    } 
    else { 
     var dataString = 'content=' + textcontent + '&msgSend=1'; 
     $.ajax({...}); 
    } 
}); 

Pensez toujours à escaping votre contenu via-à-dire prepared statements lorsque l'utilisateur l'enregistrement généré contenu dans votre base de données pour éviter l'injection SQL!