使用ajax自动刷新更新.text()


update .text() using ajax auto refresh

当我在名为signin.php:的文件中设置会话时

$user = 'john';
$_SESSION['user'] = $user;
echo "
<script>
$.ajax({
    url: 'array.php', 
    type: 'post',
    data: {'user': $user}
});
";

在另一个文件(index.php)中,我想得到:

<?php
session_start();
echo "log in as <span id='"user'"></span><br/>"; 
$user =  $_POST['user']
echo "
<script>
$('#user').text(function() {
    setInterval(function(){
        $('#user').load($user).fadeIn(10);
    }, 1000);
</script>
";
?>

我知道我把代码搞砸了。我想要的是,当会话设置在signin.php文件中时,我希望"以$user身份登录"中内容中的$user在不刷新页面的情况下自动更新,任何帮助都将不胜感激!

首先,努力更有效地格式化代码。你发布的代码到处都是。这是一种不好的做法,会导致错误、错误和其他影响,由于格式的原因,这些影响可能很难找到。

如果我按照你的做法,当有人登录并点击index.php页面时,你希望能够从另一个文件加载用户的信息,从而异步返回用户数据吗?

signin.php

您的代码看起来很混乱;您只是没有在代码和解释中告诉我们足够的信息来理解工作流的含义。

例如,在signin.php中,您正在echo使用一个<script>标记来执行$.ajax()请求,但这段代码是谁得到的?如果用户成功登录,这是signin.php内容的一部分吗?这是否意味着signin.php将加载页面以在此处使用$.ajax(),还是意味着在success上从$.ajax()运行

如果是后者,则需要返回不带标记的常规Javascript(如包裹在其周围的<script>标记),并在选项中使用dataType: 'script'

此外,我至少会用一个比array.php更具描述性的词;如果要从中获取用户数据,请将该文件命名为类似userdata.php的名称。

$user = 'john';
$_SESSION['user'] = $user;
echo "
<script>
$.ajax({
    url: 'userdata.php', 
    type: 'post',
    dataType: 'script',
    data: 'json=' + jQuery.serialize({user: '$user'})
});
";

然后在userdata.php中,您可以使用$_POST['json']访问它。

index.php

老实说,这毫无意义:

$('#user').text(function() {
    setInterval(function(){
        $('#user').load($user).fadeIn(10);
    }, 1000);
);

为什么setInterval()在设置$.text()时运行的匿名函数中?这是其中之一什么时刻,我甚至不确定你在努力实现什么。

在此之前,你有:

$user = $_POST['user'] <<< Note here, you need a ; at the end

为什么这是$_POSTsignin.php是否使用$_POST让用户登录?在这里,我相信你想要$_SESSION(我想,希望,??),因为当用户使用signin.php登录时,你会在那里存储用户名。

这是我对您尝试做什么的最佳猜测(假设您返回JSON格式的数据):

<?php
session_start();
$user =  $_SESSION['user'];
echo "log in as <span id='"user'"></span><br/>"; 
echo "
<script>
$.ajax({
    url: 'userdata.php',
    type: 'post',
    data: 'json=' + jQuery.serialize({user:'$user'}),
    dataType: 'json',
    success: function(data){
        $('#user').text(data.fullname);
    }
});
</script>
";
?>

尝试以下操作:

<?php
    $user = 'john';
    $_SESSION['user'] = $user;
?>
<script type="text/javascript">
    $.ajax({
        url: 'array.php', 
        type: 'post',
        data: { 'user': <? echo json_encode($user) ?> }
    });
</script>