Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单的自动更新AJAX页面_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 简单的自动更新AJAX页面

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);

所以我对AJAX有点陌生,我正在努力让它发挥作用。我想做的是创建一个每3秒钟自动更新一次的消息应用程序

这是我的剧本:

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);