2015-02-07 100 views
0

我想在我的瀏覽器中顯示所有我的textarea輸入(因爲如果我刷新我的頁面,所有數據都從我通過使用jquery/ajax發送的html表單中去掉了)。所以目前使用homepage.php中的jquery/ajax信息通過我的#textarea輸入發送到data.php,並在成功顯示時返回是我的#status div。每次點擊POST按鈕時,數據都會添加到瀏覽器中,但是當我刷新頁面數據時全部丟失(即使信息存儲在我的sql表中)。我知道我需要使用while()循環,並且我已經嘗試過,但是我的代碼沒有針對我嘗試實現的方式工作。刷新瀏覽器時,jQuery/AJAX和SQL查詢不會永久在瀏覽器上顯示html表單輸入?

Homepage.php

<?php 
include("connection.php"); 

session_start(); 


if(isset($_SESSION['user_id']) && $_SESSION['user_id'] != "") { 

     $sid = $_SESSION['user_id']; 

$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

$sql = "SELECT * FROM `users` WHERE id='{$sid}'"; 

$query = $conn->query($sql); 



$result = $query->fetch_assoc(); 


$fname = $result['fname']; 

$lname = $result['lname']; 

$time = time(); 


    } 


     else { 

     header("location:login.php"); 
    } 

?> 

<html> 
<head> 


<script type="text/javascript" src="jquery.js"></script> 

<script type="text/javascript"> 

//daddy code 
$ (document).ready(function() { 

//mama code 
$("button#postbutton").click(function() { 

var data = $("#formpost").serialize(); 
var posterid = <?php echo $sid; ?>; 

$.ajax({ 

type: "POST", 

url: "data.php", 

data: data, 

success: function(data) { 

$("#statustext").append(data); 
$("textarea#text1").val(''); 
} 

}); 



}); 



}); 



</script> 
</head> 

<body> 


<div id="global"> 

<form id="formpost" action="" method="post" onsubmit="return false"> 

<textarea id="text1" name="status" value="" ></textarea> 


<button id="postbutton">POST</button> 

<a href="logout.php">LOGOUT</a> 

</form> 

<br/> 
<br/> 


<div id="allstatus"> 

<!-- SKELETON --> 


<div id="wholestatus"> 


<div id="statuspic"> 
</div> 


<div id="statusinfo"> 

<div id="statusname"><?php echo " Welcome to VLE, {$fname} {$lname} ";?></div> 
<div id="statustext"> </div> 


</div> 


</div> 


<!-- SKELETON --> 


</div> 


</div> 


</body> 


</html> 

data.php

<?php 



const DB_HOST = 'localhost'; 
const DB_USER = 'root'; 
const DB_PASS = ''; 
const DB_NAME = 'forum'; 
//connecting 

$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

if($conn->connect_error) { 
die("Connection Failed: " . $conn->connect_error); 
} else { 

} 


if(isset($_POST['status'])) 
{ 
$var = $_POST['status']; 

$sql = "INSERT INTO `question`(id, question) VALUES ('', '{$var}')"; 
$result = $conn->query($sql); 
if($result) { } 

    else { 

    echo "failed: " . $conn->error; 
    } 


echo "<br>{$var}"; 



} 





?> 
+0

你試過Ctrl + F5鍵或Ctrl + R強制刷新?這可能是輸出緩存在瀏覽器中。如果事實證明這是問題,您可以設置一個標題來告訴瀏覽器它不應該緩存該頁面。 – GolezTrol 2015-02-07 15:13:38

+0

狀態並沒有真正堅持客戶端,所以當你刷新時你基本上從頭開始。如果你使用ajax,你爲什麼要刷新頁面? – Slime 2015-02-07 15:15:49

+0

我只想從sql表中檢索所有數據,使用一個while循環來獲取assoc。問題是我的代碼不會工作...我的$ var包含所有的textarea輸入,並存儲在sql表中的問題,但是當我刷新我的瀏覽器的HTML顯示不見了。如果你明白我的意思.. – 2015-02-07 15:21:16

回答

0

你的選擇是要求一個特定的會話ID,但您的插入不存儲ID列內任何東西。

+0

它被設置爲自動增量和ID正在存儲在我的SQL表中,因爲我檢查了它 – 2015-02-07 15:29:27

+0

你的會話ID是如何連接到這個自動遞增的表ID? – Tom 2015-02-07 15:45:26

0

我不確定爲什麼你一直在討論頁面刷新,如果你使用ajax,因爲ajax允許你在沒有頁面刷新的情況下發送/檢索數據。

在您的成功函數中,任何返回的變量都在您的變量data中,但我敢打賭,如果您查看此變量的內容,您將看到它沒有任何內容,因爲您的data.php未設置爲給予一個適當的迴應。

您需要這在data.php文件...

header('Content-Type: application/json'); 

然後當你回聲響應,你需要做的是這樣的... ...

echo json_encode($var); 

現在成功的內功能你的data將持有$var的內容,其實際上持有$_POST['status']的內容。

所以後來成功函數內可以顯示的結果是這樣的...

$('#statustext').html(data) 
+0

據我所知,我猜想我做的一切都是錯誤的,因爲我想創建一個瀏覽器,用戶可以在其中發佈問題供其他人查看。因此,如果我刷新瀏覽器,所有發佈的問題都消失了(儘管存在於數據庫中)是毫無意義的。 – 2015-02-07 15:50:05

+0

你是什麼意思創建一個瀏覽器?把東西放入數據庫並從數據庫中檢索東西是兩個獨立的步驟。爲了讓我加載一個頁面並查看你放入數據庫的內容,該頁面需要包含查詢數據庫並獲取該信息的代碼。 – Slime 2015-02-07 15:52:57

+0

是的,這是使用while()循環,但數據顯示,當我點擊發布。我希望它顯示,而不管.click事件 – 2015-02-07 15:57:28