Ajax代码无法正常工作,即使它是(我认为)正确
问题描述:
,这做的是,当用户点击该按钮时,它将执行的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'];
}
?>
答
变化与建议(在评论): -
<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
您收到了什么错误?你有没有从浏览器检查控制台?并检查它给出了什么错误 –
那么你的JS和HTML看起来像它会工作,你确认PHP脚本实际上返回任何东西? MySQL是否失败 - 是一个实际返回的行..? – Stuart
另外(我希望你已经知道),你的SQL是广泛存在的滥用(期待几个链接到[鲍比表](https://xkcd.com/327/) – Stuart