Php 通过POST将变量从一页传递到另一页,并打印上一页中的数据
我有两个文件:basic.php和pptimeline.php。第一个包含接口,第二个是从数据库获取数据的文件,它应该模拟json文件,因为我在上面使用它:Php 通过POST将变量从一页传递到另一页,并打印上一页中的数据,php,json,post,Php,Json,Post,我有两个文件:basic.php和pptimeline.php。第一个包含接口,第二个是从数据库获取数据的文件,它应该模拟json文件,因为我在上面使用它:header('Content-Type:application/json') if (isset ($_POST['value'])) { $infotimeline = array(); /* * REPLACE this with Database fetching/quering */
header('Content-Type:application/json')代码>
if (isset ($_POST['value'])) {
$infotimeline = array();
/*
* REPLACE this with Database fetching/quering
*/
$infotimeline['id'] = 322;
$infotimeline['title'] = "the lion king";
$infotimeline['description'] = "good movie";
$infotimeline['focus_date'] = 1990;
$data = json_encode($infotimeline);
echo $data;
}
?>
我有一个组合框,显示数据库中的进程数,然后在时间轴中显示。我设法将$nprocesso
从basic.php传递到pptimeline.php并在那里打印。问题是我想将$nprocesso
传递到pptimeline.php,运行数据库的查询,然后在basic.php中打印数据,但我不知道怎么做,因为表单操作让我停留在pptimeline.php页面上,打印的文本是json格式的
我希望我说清楚了
basic.php
<form action="json/pptimeline.php" method="POST" >
<label for="Process"> NProcess : </label>
<select id="cproc" name="NProc" onchange="document.getElementById('nprocesso').value=this.options[this.selectedIndex].text">
<?php
foreach ($products as $res3)
{
echo "<option value='".$res3["PROCESSO"]."'>".$res3["PROCESSO"]."</option>";
}
?>
</select>
<input type="hidden" name="nprocesso" id="nprocesso" value="" />
<input type="submit" name="search" value="Search"/>
</form>
<?php
if(isset($_POST['search']))
{
$nprocValue = $_POST['Proc'];
$nproc = $_POST['nprocesso']; // get the selected text
}
?>
if (isset ($_POST['value'])) {
$infotimeline = array();
/*
* REPLACE this with Database fetching/quering
*/
$infotimeline['id'] = 322;
$infotimeline['title'] = "the lion king";
$infotimeline['description'] = "good movie";
$infotimeline['focus_date'] = 1990;
$data = json_encode($infotimeline);
echo $data;
}
?>
一种方法是使用addheader('Location:$new_url');要将pptimeline.php重定向回basic.php,请执行以下操作:
if (isset ($_REQUEST['nprocesso'])) {
$nprocesso = $_REQUEST['nprocesso'];
echo $nprocesso;
header('Location: basic.php?v=$nprocesso');
}
在basic.php中,在末尾添加以下内容:
if (isset($_GET['v']))
{
echo $_GET['v'];
}
此外
if (isset ($_POST['value'])) {
$infotimeline = array();
/*
* REPLACE this with Database fetching/quering
*/
$infotimeline['id'] = 322;
$infotimeline['title'] = "the lion king";
$infotimeline['description'] = "good movie";
$infotimeline['focus_date'] = 1990;
$data = json_encode($infotimeline);
echo $data;
}
?>
上面提供的解决方案确实有效,但远不是最佳方法
您需要的是从basic.php向pptimeline.php发出AJAX请求,并将结果返回basic.php上显示
要涵盖的内容太多,要修改代码来准确地告诉您如何做到这一点。但我将尝试总结:
包含在basic.php中
删除
周围的
,而是将事件处理程序添加到
在单击处理程序中,获取用户选择的值
在click处理程序中创建一个函数,并(通过POST)发送该值
在pptimeline.php中:
if(设置($\u POST['v'])
而不是$\u REQUEST[]
删除header()函数,而只回显要发送回basic.php的数据
如果需要json格式的数据,请不要忘记保留标题('Content-Type:application/json')
AJAX文章框架:
$("#form1").on('click', function(){
// get the selected value from <select>
//var value = ....
$.ajax()
{
url: "pptimeline.php",
type: "POST",
data: {"v" : value}
success: function(response) {
// some code to neatly display the results
},
error: function(x,y,z){
alert("an error occured");
}
});
对不起,如果我是个哑巴或其他什么的话,我对这一点很陌生。我一直在尝试按照你说的去做,但我还没有完全做到,因为我不知道在成功:
中放什么,你的意思是什么。这些是我在images和pptimeline1.php中的文件,将位于if块之后的所有代码放在其中。然后在$infotimeline中包含所有数据之后,$str=json_encode($infotimeline);echo$str;在basic.php中,您需要解析刚刚收到的JSON字符串并从中生成一个数组,我认为您使用的是JSON.parse(response)。此时,在basic.php中有了数组。此时,如何显示数据取决于您。一种方法是创建一个,然后放入其中。我将调用时间线的代码放入success:
中,您可以在绿色框中看到,绿色箭头就是我调用文件-。我试着按照你在pptimeline.php中说的做,但是$\u POST
部分出了问题。这就是数据应该出现在basic.php文件中的地方-很抱歉,我回答了您最初的问题,我不能为您完成整个项目。请将以上答案标记为正确。我会投票,但上面说我需要15个声誉。你回答了我的问题,帮了我很多,所以我很感激。我不想让你为我做这个项目,我想知道这就是为什么我要寻求指导。