将表单数据提交到另一个 php 页面,但将结果显示回提交表单的同一页面?
Submit a form data to another php page but display the result back to the same page from where the form was submitted?
我有一个表单,用于从我的 home.php 页面向 image.php 发送数据。
<form class="d-flex" action="" method="post">
<input class="rounded-0 form-control" type="text" name = "name" placeholder="Explore. . ." aria-label="Search">
<button class="border searchfeature" id= "show" type="submit"><i class="fa fa-search"></i></button>
</form>
当我输入 action = "image.php"
时,页面会将我带到 image.php 页面并显示我想要的内容,即我在搜索表单中输入的图像。然而,我想要的是在同一页面上保留 action="home.php"
的操作,但在提交表单后取回图像并将其显示在 home.php 页面中。
我听说会话是解决此问题的好方法,但我不知道如何在提交表单后将其显示回同一页面。我知道解决这个问题的一种方法是将 image.php 代码放在 home.php 页面中,但我将代码分开以使其更清晰。
谢谢!
表单视图:-
make a id="createForm" in your <form>
输入字段中的 id = "name"。
<form id="createForm" class="d-flex" action="" method="post">
<input class="rounded-0 form-control" type="text" name = "name" id = "name" placeholder="Explore. . ." aria-label="Search">
<button class="border searchfeature" id= "show" type="submit"><i class="fa fa-search"></i></button>
</form>
Jquery Ajax 代码:-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#createForm').on('submit', function(e){
e.preventDefault();
var name = $('#name').val();
$.ajax({
type: "POST",
url: "data.php",
data: {name: name},
success: function(data){
$("#createForm")[0].reset();
$('#table1').html(data);
}
});
});
});
</script>
在你的HTML
<div id="table1">
//Let jQuery AJAX Change This Text
</div>
data.php 页数
<?php
//data.php
if(isset($_POST["name"]))
{
$name = $_POST["name"];
// select query with where clause name condition
echo $output;
}
?>
您可以通过多种方式执行此操作,这完全取决于第二个文件中发生的事情 - 我们是留在那里还是只是返回对第一个文件的响应?因为你可以:
第一个文件:
<?php
if(isset($_GET['response'])){
echo 'The response: ' . $_GET['response'];
} else {
?>
<form id="createForm" class="d-flex" action="2nd.php" method="post">
<input class="rounded-0 form-control" type="text" name = "name" id = "name" placeholder="Explore. . ." aria-label="Search">
<button class="border searchfeature" id= "show" type="submit"><i class="fa fa-search">go</i></button>
</form>
<?php
}
第二个文件:
<?php
$name = $_POST['name'] . " - Received!!!";
header("Location: 1st.php?response=$name");
响应将在 1st.php:
The response: SomeNameValue - Received!!!
这是一种非常非常简单的方法 - 在第一个文件中使用 header 和 $_GET 方法,当 $_GET['response'] 存在时它会显示响应并跳过表单...
如果您计划在 2nd.php 文件中显示某些内容,那么 header 对您来说是可用的,但您可以创建另一个表单并在隐藏输入中发送响应或使用 Javascript 到 window.location.assign("1st.php?response=") 其中 $name 变量是我们在 2nd.php.[=13= 中处理后的 $_POST['name'] ]
但是第一个例子只是形式和 PHP。
我有一个表单,用于从我的 home.php 页面向 image.php 发送数据。
<form class="d-flex" action="" method="post">
<input class="rounded-0 form-control" type="text" name = "name" placeholder="Explore. . ." aria-label="Search">
<button class="border searchfeature" id= "show" type="submit"><i class="fa fa-search"></i></button>
</form>
当我输入 action = "image.php"
时,页面会将我带到 image.php 页面并显示我想要的内容,即我在搜索表单中输入的图像。然而,我想要的是在同一页面上保留 action="home.php"
的操作,但在提交表单后取回图像并将其显示在 home.php 页面中。
我听说会话是解决此问题的好方法,但我不知道如何在提交表单后将其显示回同一页面。我知道解决这个问题的一种方法是将 image.php 代码放在 home.php 页面中,但我将代码分开以使其更清晰。
谢谢!
表单视图:-
make a id="createForm" in your <form>
输入字段中的 id = "name"。
<form id="createForm" class="d-flex" action="" method="post">
<input class="rounded-0 form-control" type="text" name = "name" id = "name" placeholder="Explore. . ." aria-label="Search">
<button class="border searchfeature" id= "show" type="submit"><i class="fa fa-search"></i></button>
</form>
Jquery Ajax 代码:-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#createForm').on('submit', function(e){
e.preventDefault();
var name = $('#name').val();
$.ajax({
type: "POST",
url: "data.php",
data: {name: name},
success: function(data){
$("#createForm")[0].reset();
$('#table1').html(data);
}
});
});
});
</script>
在你的HTML
<div id="table1">
//Let jQuery AJAX Change This Text
</div>
data.php 页数
<?php
//data.php
if(isset($_POST["name"]))
{
$name = $_POST["name"];
// select query with where clause name condition
echo $output;
}
?>
您可以通过多种方式执行此操作,这完全取决于第二个文件中发生的事情 - 我们是留在那里还是只是返回对第一个文件的响应?因为你可以:
第一个文件:
<?php
if(isset($_GET['response'])){
echo 'The response: ' . $_GET['response'];
} else {
?>
<form id="createForm" class="d-flex" action="2nd.php" method="post">
<input class="rounded-0 form-control" type="text" name = "name" id = "name" placeholder="Explore. . ." aria-label="Search">
<button class="border searchfeature" id= "show" type="submit"><i class="fa fa-search">go</i></button>
</form>
<?php
}
第二个文件:
<?php
$name = $_POST['name'] . " - Received!!!";
header("Location: 1st.php?response=$name");
响应将在 1st.php:
The response: SomeNameValue - Received!!!
这是一种非常非常简单的方法 - 在第一个文件中使用 header 和 $_GET 方法,当 $_GET['response'] 存在时它会显示响应并跳过表单...
如果您计划在 2nd.php 文件中显示某些内容,那么 header 对您来说是可用的,但您可以创建另一个表单并在隐藏输入中发送响应或使用 Javascript 到 window.location.assign("1st.php?response=") 其中 $name 变量是我们在 2nd.php.[=13= 中处理后的 $_POST['name'] ]
但是第一个例子只是形式和 PHP。