Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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
Php jQuery/AJAX和SQL query在刷新浏览器时是否不在浏览器上永久显示html表单输入?_Php_Html_Ajax - Fatal编程技术网

Php jQuery/AJAX和SQL query在刷新浏览器时是否不在浏览器上永久显示html表单输入?

Php jQuery/AJAX和SQL query在刷新浏览器时是否不在浏览器上永久显示html表单输入?,php,html,ajax,Php,Html,Ajax,我想在我的浏览器中显示所有的textarea输入,因为如果我刷新页面,所有数据都会从我使用jquery/ajax通过html表单发送的内容中消失。因此,当前使用jquery/ajax的信息从homepage.php通过我的textarea输入发送到data.php,并在成功时返回显示的是我的status div。每次我点击POST按钮,数据都会添加到浏览器中,但当我刷新页面时,数据都会丢失,即使信息存储在我的sql表中。我知道我需要使用while循环,我已经尝试过了,但是我的代码都无法实现我想要

我想在我的浏览器中显示所有的textarea输入,因为如果我刷新页面,所有数据都会从我使用jquery/ajax通过html表单发送的内容中消失。因此,当前使用jquery/ajax的信息从homepage.php通过我的textarea输入发送到data.php,并在成功时返回显示的是我的status div。每次我点击POST按钮,数据都会添加到浏览器中,但当我刷新页面时,数据都会丢失,即使信息存储在我的sql表中。我知道我需要使用while循环,我已经尝试过了,但是我的代码都无法实现我想要实现的目标

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}";



}





 ?>

您的select正在调用特定的会话id,但insert没有在id列中存储任何内容。

我不知道如果您使用ajax,为什么要一直谈论页面刷新,因为ajax允许您在不刷新页面的情况下发送/检索数据

在success函数中,返回的任何内容都在名为data的变量中,但我敢打赌,如果查看此变量的内容,您会发现它没有任何内容,因为data.php的设置没有给出正确的响应

您需要在data.php文件中使用此文件

然后当你回应时,你需要这样做

echo json_encode($var);
$('#statustext').html(data)
现在,在success函数中,您的数据将包含$var的内容,而$var实际上包含$u POST['status']的内容

因此,在success函数中,您可以这样显示结果

echo json_encode($var);
$('#statustext').html(data)

您是否尝试过Ctrl+F5或Ctrl+R强制刷新?可能是输出缓存在浏览器中。如果这是一个问题,您可以设置一个标题,告诉浏览器不应该缓存页面。状态在客户端上并不真正持久,因此当您刷新时,基本上是从头开始。如果使用ajax,为什么要进行页面刷新?我只想使用获取assoc的while循环从sql表中检索所有数据。问题是我的代码无法工作…我的$var包含所有textarea输入,并存储在sql表中。然而,当我刷新浏览器时,html显示消失了。如果你明白我的意思,比如$query=SELECT*fromquestion$结果=$conn->query$query;虽然$row=$result->fetch_assoc{echo{$row['question']};},但这并没有以正确的方式显示我的sql表。这是浏览器和刷新的本质。当你刷新时,它对你以前做过的事情或者在浏览器或页面上发生的事情没有记忆……所以当然你的HTML不见了。您需要在页面中查询数据库,以便每次加载时都能看到结果。但正如我已经说过的,既然已经在使用ajax,为什么还要依赖页面刷新呢?发布后,为什么要刷新?只需使用success函数显示结果。它设置为自动递增,并且在我检查时id存储在我的sql表中。您的会话id如何连接到此自动递增的表id?我理解,我猜我做错了所有事情,因为我想创建一个浏览器,用户可以在其中发布问题供其他人查看。因此,如果我刷新我的浏览器,所有发布的问题都会消失,尽管它们存在于数据库中,这一事实是完全没有意义的。创建浏览器是什么意思?将内容放入数据库和从数据库中检索内容是两个独立的步骤。为了让我加载一个页面并查看您在数据库中输入的内容,该页面需要包含查询数据库并获取该信息的代码。是的,这使用while循环,但单击“发布”时会显示数据。我希望它显示为不考虑事件。单击事件您没有使用while循环,那么您在说什么?我想我不能再帮你了,因为我已经解释了你需要知道的一切。