2016-11-27 39 views
1

,这做的是,当用户点击该按钮时,它将执行的Ajax代码,然后获取输入的值,并将其发送到PHP文件中的函数然后将其发送回Ajax代码以显示来自MySQL表的消息。Ajax代码无法正常工作,即使它是(我认为)正确

我试着改变我的代码,改变divID,改变语法,清除代码块,但似乎没有工作。

AJAX

<script> 
$(document).ready(function() { 
    $("#snd").click(function() { 
     var msgg = $('input[name=message]').val(); 
     $.ajax({ 
      type: "POST", 
      url: 'automatedchat_func.php', 
      data: {newmsg: msgg}, 
      success: function(data) { 
       $("#conversation").html(data); 
      } 
     }); 
    }); 
}); 
</script> 

HTML 修订

<div class="convo"> 
       <div class="convo_field" id="conversation"> 



       </div> 
       <div class="obj"> 
        <div class="txtbox"> 
        <form method="POST"> 
         <input type="input" id="msg" name="message" placeholder="Type exact or related word(s) of your question"/> 
        </form> 
        </div> 
        <div class="but_send"><button id="snd" name="send">SEND</button></div> 
       </div> 
       </div> 

PHP 修订

<?php 
include 'database/connect.php'; 

session_start(); 


$sql = "SELECT * FROM ai WHERE keywords LIKE '%$_POST[message]%' OR '$_POST[message]%_' OR '$_POST[message]_'"; 
    $result = $conn->query($sql); 
    if ($row = $result->fetch_assoc()) { 
     echo "Hi ". $_SESSION['name'] .".<br> " . $row['message']; 
    } 

?> 
+0

您收到了什么错误?你有没有从浏览器检查控制台?并检查它给出了什么错误 –

+0

那么你的JS和HTML看起来像它会工作,你确认PHP脚本实际上返回任何东西? MySQL是否失败 - 是一个实际返回的行..? – Stuart

+0

另外(我希望你已经知道),你的SQL是广泛存在的滥用(期待几个链接到[鲍比表](https://xkcd.com/327/) – Stuart

回答

0

变化与建议(在评论): -

<div class="convo"> 
    <div class="convo_field" id="conversation"> 
    </div> 
    <div class="obj"> 
     <div class="txtbox"> 
      <input type="input" id="msg" name="message" placeholder="Type exact or related word(s) of your question"/> 
     </div><!-- form not requird --> 
     <div class="but_send"><button id="snd" name="send">SEND</button></div> 
    </div> 
</div> 

<!-- Add jquery library so that jquery code wiil work --> 

<script> 
$(document).ready(function() { 
    $("#snd").click(function() { 
     var msgg = $('#msg').val(); // id is given so use that, its more easy 
     $.ajax({ 
      type: "POST", 
      url: 'automatedchat_func.php', 
      data: {newmsg: msgg}, 
      success: function(data) { 
       $("#conversation").html(data); 
      } 
     }); 
    }); 
}); 
</script> 

automatedchat_func.php(必须是在你上面的html文件存在相同的工作目录)

<?php 
error_reporting(E_ALL);// check all type of error 
ini_set('display_errors',1);// display all errors 
include 'database/connect.php'; 
session_start(); 
$final_result='';//a variable 
if(isset($_POST['newmsg']) && !empty($_POST['newmsg'])){// its newmsg not message 
    $message = $_POST['newmsg']; 
    $sql = "SELECT * FROM ai WHERE keywords LIKE '%$message%' OR '$message%' OR '$message'"; // check the change ere 
    $result = $conn->query($sql); 
    while($row = $result->fetch_assoc()) { // while needed 
     $final_result .="Hi ". $_SESSION['name'] .".<br> " . $row['message']."<br>"; 
    } 
}else{ 
    $final_result .="Hi please fill the input box first"; 
} 
echo $final_result; // send final result as response to ajax 
?> 

注意: - 您的查询仍然容易受到SQL注入的影响。因此请阅读prepared statements并使用它们

+0

谢谢曼!有用! 是的,我知道我的查询是不安全的,当我完成这篇论文的网站我工作:) – user5567987