2012-02-11 45 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