2012-02-11 68 views
0

当我设置一个文件中的会话称为signin.php更新的.text()使用AJAX自动刷新

$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”自动更新而不刷新页面,任何帮助将不胜感激!

+1

我想$(“#跨度”)应该是$(” #user“)... – 2012-02-11 11:56:19

+0

signin可以做一个ajax后,并得到一个json结果返回包含名称,然后将该变量设置为通过json发送的值,然后显示在您的网页上,不知道为什么你有php回声一堆的JavaScript,我不代码的PHP,但显然你可以输出json http://php.net/manual/en/function.json-encode.php json然后容易吸收jquery – davethecoder 2012-02-11 11:57:48

回答

0

第一,做事勤奋上更有效地格式化你的代码。你发布的代码遍布全球。这是一种不好的做法,会导致错误,错误和其他由于格式化而难以找到的效果。

如果我按照您的操作,当某人登录并点击index.php页面时,您希望能够从另一个文件加载用户信息,以便异步返回用户数据?

signin.php

你的代码是在这似乎是做什么的混乱;你只是没有告诉我们足够的代码和解释,以了解工作流程需要什么。

例如,在signin.php,你echo荷兰国际集团一<script>标签,做一个$.ajax()请求,但谁/什么得到的代码?如果用户成功登录,是否为signin.php内容的一部分?这是否意味着signin.php将加载在这里使用的$.ajax(),或者这意味着从运行的$.ajax()success

如果是后者,则需要返回正常的没有标记的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> 
"; 

?> 
0

尝试以下操作:

<?php 
    $user = 'john'; 
    $_SESSION['user'] = $user; 
?> 

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

注意'setInterval( )的使用。这似乎涉及到第一部分,当我认为第二部分是问题所在。 – 2012-02-11 12:36:06