Javascript 简单的自动更新AJAX页面
所以我对AJAX有点陌生,我正在努力让它发挥作用。我想做的是创建一个每3秒钟自动更新一次的消息应用程序 这是我的剧本:Javascript 简单的自动更新AJAX页面,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,所以我对AJAX有点陌生,我正在努力让它发挥作用。我想做的是创建一个每3秒钟自动更新一次的消息应用程序 这是我的剧本: function first() { var searchUser = $("input[name='username']").val(); $.post("messageSearch.php", {userVal: searchUser}, function(output){ $('#messageField').html(output);
function first() {
var searchUser = $("input[name='username']").val();
$.post("messageSearch.php", {userVal: searchUser}, function(output){
$('#messageField').html(output);
});
}
function searchm() {
var searchUser = $("input[name='username']").val();
$.post("messageSearch.php", {userVal: searchUser}, function(output){
$('#messageField').val(output);
});
}
setInterval( "searchm()", 3000 );
以下是我的messageSearch.php:
<?php
session_start();
$userdb = new mysqli('localhost', 'test', '', 'social-network');
if(isset($_POST['userVal'])) {
$searchm = $_POST['userVal'];
$output = '';
if ($searchm == ''){
echo $output;
exit();
}
$uidquery = mysqli_query($userdb, "SELECT * FROM users WHERE username='$searchm' LIMIT 1");
$uid= '';
while($row2 = mysqli_fetch_array($uidquery)) {
$uid = $row2['id'];
}
$uid = 2;
$query = mysqli_query($userdb, "SELECT * FROM messages WHERE p2=$uid AND `read`='n' LIMIT 3");
$count = mysqli_num_rows($query);
if($count == 0) {
$output = 'You have no messages.';
} else {
while($row = mysqli_fetch_array($query)) {
$from = $row['p1'];
$message = $row['message'];
$time = $row['time'];
$time = date('Y-m-d H:i:s', strtotime($time));
$fromResult = mysqli_query($userdb, "SELECT * FROM users WHERE id = '$from'");
while($row1 = mysqli_fetch_array($fromResult)) {
$fromFirst = $row1['first_name'];
$fromLast = $row1['last_name'];
$from = $fromFirst.' '.$fromLast;
}
$output .= '
<li>
<a href="#">
<div>
<strong>'.$fromFirst.' '.$fromLast.'</strong>
<span class="pull-right text-muted">
<em>'.$time.'</em>
</span>
</div>
<div>'.$message.'</div>
</a>
</li>
<li class="divider"></li>
';
}
$output .= '<li><a class="text-center" href="#"><strong>See All Messages</strong> <i class="fa fa-angle-right"></i></a></li>';
}
}
echo ($output);
?>
设置间隔(“searchm()”,3000)代码>应该是
setInterval(searchm,3000)代码>
PHP中的另一个错误:
$query = mysqli_query($userdb, "SELECT * FROM messages WHERE p2=$uid AND `read`='n' LIMIT 3")
应该是:
$query = mysqli_query($userdb, "SELECT * FROM messages WHERE p2=".$uid." AND `read`='n' LIMIT 3")
最后
$fromResult = mysqli_query($userdb, "SELECT * FROM users WHERE id = '$from'");
到
事实上,没有区别。我已经在我的页面上添加了这个,尽管这似乎并没有解决问题。谢谢。我同意后一种形式更可取,但两者都适用。这是事实,但我不认为这是问题的答案@HAL9000这提高了一点性能,因为浏览器没有执行“字符串代码评估”步骤。是的,这更好,但它没有修复它,我不知道为什么有人投了反对票。首先,您应该在控制台中检查ajax是否返回任何结果。第二个在searchm函数中使用了$('#messageField').val(输出);我希望这将是一个div。在jquery div中不允许这样做,因为在您使用的第一个函数中使用了html。请告诉我它是否解决了问题。是否为空?即使有错误报告<代码>ini设置(“显示错误”,1);错误报告(E_全部)
您的第一个
功能似乎没有使用,是吗?另外,请注意,您的代码会受到SQL注入攻击,您应该明确纠正这一点—所有SQL语句都是错误的。您没有正确连接变量。执行“sql”。$php_val.“sql的其余部分”我的第一个()函数在body加载时被调用,尽管searchm()似乎不起作用,因为它是一个不返回值的函数。
$fromResult = mysqli_query($userdb, "SELECT * FROM users WHERE id = ".$from);