使用表单使用jQUERY/AJAX重新加载和更新PHP页面
我想将信息从html输入发布到PHP页面,并使用jQUERY和AJAX动态地重新加载它。函数应该从页面输入中获取所有值并将它们发布到PHP页面,然后在“graph”div中重新加载页面。我有一个html页面、我正在使用的脚本函数和要发布到的PHP页面。单击submit按钮时,我的函数成功地将PHP页面加载到div中,但我试图发布的信息似乎没有传输。谢谢你的帮助 以下是我使用的jQUERY脚本:使用表单使用jQUERY/AJAX重新加载和更新PHP页面,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我想将信息从html输入发布到PHP页面,并使用jQUERY和AJAX动态地重新加载它。函数应该从页面输入中获取所有值并将它们发布到PHP页面,然后在“graph”div中重新加载页面。我有一个html页面、我正在使用的脚本函数和要发布到的PHP页面。单击submit按钮时,我的函数成功地将PHP页面加载到div中,但我试图发布的信息似乎没有传输。谢谢你的帮助 以下是我使用的jQUERY脚本: <script src="jquery.js"></script> <s
<script src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//On-load defaults
var $critSelected = 'sex';
$(".criteria#sex").addClass("criteriaSelected");
//Action for update button
$('form#update').submit(function() {
var graphContent = $("#graphContent").attr("value");
var criteria = $critSelected;
var ageLow = $('#ageLow').attr('value');
var ageHigh = $('#ageHigh').attr('value');
var tr = $('#tr').attr('checked');
var ro = $('#ro').attr('checked');
var tilch = $('#tilch').attr('checked');
$.ajax({
type: "POST",
url: "graph.php",
data: "graphContent="+ graphContent + "criteria=" + criteria,
success: function(data){
$('div.graph').fadeOut(function(){$('div.graph').load("graph.php").fadeIn();});
}
});
return false;
});
//Change selected criteria
$(".criteria").click(function() {
switch($(this).attr("id")) {
case 'sex':
$(this).removeClass("criteriaDeselected").addClass("criteriaSelected");
$(".criteria#loc").removeClass("criteriaSelected").addClass("criteriaDeselected");
$(".criteria#type").removeClass("criteriaSelected").addClass("criteriaDeselected");
$critSelected = 'sex';
break;
case 'loc':
$(this).removeClass("criteriaDeselected").addClass("criteriaSelected");
$(".criteria#sex").removeClass("criteriaSelected").addClass("criteriaDeselected");
$(".criteria#type").removeClass("criteriaSelected").addClass("criteriaDeselected");
$critSelected = 'loc';
break;
case 'type':
$(this).removeClass("criteriaDeselected").addClass("criteriaSelected");
$(".criteria#loc").removeClass("criteriaSelected").addClass("criteriaDeselected");
$(".criteria#sex").removeClass("criteriaSelected").addClass("criteriaDeselected");
$critSelected = 'type';
break;
}
});
});
</script>
$(文档).ready(函数(){
//加载默认值
var$critSelected='sex';
$(“.criteria#sex”).addClass(“criteriaSelected”);
//更新按钮的操作
$('form#update')。提交(函数(){
var graphContent=$(“#graphContent”).attr(“值”);
var标准=$critSelected;
var ageLow=$('#ageLow').attr('value');
var ageHigh=$('#ageHigh').attr('value');
var tr=$('#tr').attr('checked');
var ro=$('#ro').attr('checked');
var tilch=$('#tilch').attr('checked');
$.ajax({
类型:“POST”,
url:“graph.php”,
数据:“graphContent=“+graphContent+”标准=“+criteria,
成功:功能(数据){
$('div.graph').fadeOut(函数(){$('div.graph').load(“graph.php”).fadeIn();});
}
});
返回false;
});
//更改所选标准
$(“.criteria”)。单击(函数(){
开关($(this.attr(“id”)){
“性别”一案:
$(this).removeClass(“criteriaDeselected”).addClass(“criteriaSelected”);
$(.criteria.loc”).removeClass(“criteriaSelected”).addClass(“criteriaDeselected”);
$(“.criteria.type”).removeClass(“criteriaSelected”).addClass(“criteriaDeselected”);
$critSelected='sex';
打破
案例“loc”:
$(this).removeClass(“criteriaDeselected”).addClass(“criteriaSelected”);
$(“.criteria.sex”).removeClass(“criteriaSelected”).addClass(“criteriaDeselected”);
$(“.criteria.type”).removeClass(“criteriaSelected”).addClass(“criteriaDeselected”);
$critSelected='loc';
打破
案例“类型”:
$(this).removeClass(“criteriaDeselected”).addClass(“criteriaSelected”);
$(.criteria.loc”).removeClass(“criteriaSelected”).addClass(“criteriaDeselected”);
$(“.criteria.sex”).removeClass(“criteriaSelected”).addClass(“criteriaDeselected”);
$critSelected='type';
打破
}
});
});
我抓取php文件中的帖子如下:
<?php
include("graphFunctions.php");
$graphContent = htmlspecialchars(trim($_POST['graphContent']));
$criteria = htmlspecialchars(trim($_POST['criteria']));
$ageLow = htmlspecialchars(trim($_POST['ageLow']));
$ageHigh = htmlspecialchars(trim($_POST['ageHigh']));
$tr = htmlspecialchars(trim($_POST['tr']));
$ro = htmlspecialchars(trim($_POST['ro']));
$tilch = htmlspecialchars(trim($_POST['tilch']));
echo $graphContent." ".$criteria." ".$ageLow;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="graph.css" rel="stylesheet" type="text/css" />
<?php include("scripts.php"); ?>
</head>
<body>
<form id="update" method"post">
<div id="leftnav" align="center">
<div id="title" align="center">
<select id="graphContent" style="width:150px">
<option value="Age Distribution">Age Distribution</option>
<!-- <option value="sex">Sex Distribution</option>
<option value="volvloc">Volume vs. Location</option>
<option value="treatment">Treatment Distibution</option> -->
</select>
<br />
<br />
</div>
<div id="criteria" align="right">
<br />
<div class="criteria" id="sex" style="float:left"> By Sex </div>
<div class="criteria" id="loc" style="float:left"> By Location </div>
<div class="criteria" id="type" style="float:left"> In/Out Patient </div><br />
<br />
</div>
<div id="constraints" align="left">
<br />
Age Range :  
<input type="text" value="Low" style="width:30px" id="ageLow" />
to 
<input type="text" value="High" style="width:30px" id="ageHigh" />
<br />
<br />
Location :
<input type="checkbox" value="TR" id="tr" />TR
<input type="checkbox" value="RO" id="ro" />RO
<input type="checkbox" value="Tilch" id="tilch" />Tilch<br />
</div>
<div class="submit" align="left" style="padding-top:100px">
<button type="submit" name="submit">Update</button>
</form>
</div>
</div>
<div class="graph" style="display:none">
</div>
</body>
</html>
html文件如下所示:
<?php
include("graphFunctions.php");
$graphContent = htmlspecialchars(trim($_POST['graphContent']));
$criteria = htmlspecialchars(trim($_POST['criteria']));
$ageLow = htmlspecialchars(trim($_POST['ageLow']));
$ageHigh = htmlspecialchars(trim($_POST['ageHigh']));
$tr = htmlspecialchars(trim($_POST['tr']));
$ro = htmlspecialchars(trim($_POST['ro']));
$tilch = htmlspecialchars(trim($_POST['tilch']));
echo $graphContent." ".$criteria." ".$ageLow;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="graph.css" rel="stylesheet" type="text/css" />
<?php include("scripts.php"); ?>
</head>
<body>
<form id="update" method"post">
<div id="leftnav" align="center">
<div id="title" align="center">
<select id="graphContent" style="width:150px">
<option value="Age Distribution">Age Distribution</option>
<!-- <option value="sex">Sex Distribution</option>
<option value="volvloc">Volume vs. Location</option>
<option value="treatment">Treatment Distibution</option> -->
</select>
<br />
<br />
</div>
<div id="criteria" align="right">
<br />
<div class="criteria" id="sex" style="float:left"> By Sex </div>
<div class="criteria" id="loc" style="float:left"> By Location </div>
<div class="criteria" id="type" style="float:left"> In/Out Patient </div><br />
<br />
</div>
<div id="constraints" align="left">
<br />
Age Range :  
<input type="text" value="Low" style="width:30px" id="ageLow" />
to 
<input type="text" value="High" style="width:30px" id="ageHigh" />
<br />
<br />
Location :
<input type="checkbox" value="TR" id="tr" />TR
<input type="checkbox" value="RO" id="ro" />RO
<input type="checkbox" value="Tilch" id="tilch" />Tilch<br />
</div>
<div class="submit" align="left" style="padding-top:100px">
<button type="submit" name="submit">Update</button>
</form>
</div>
</div>
<div class="graph" style="display:none">
</div>
</body>
</html>
年龄分布
按性别
按地点
住院/门诊病人
年龄范围:
至
地点:
TR
反渗透
蒂尔奇
更新
谢谢 编写AJAX调用数据部分的方式,
graphContent=“+graphContent+”criteria=“+criteria
将生成类似“graphContent=value1criteria=value2”的字符串,这是不正确的
您可以使用jQuery serialize()方法完成整个表单,并通过以下方式发送:
var formData = $('form#update').serialize();
$.ajax({
type: "POST",
url: "graph.php",
data: formData,
success: function(data){
$('div.graph').fadeOut(function(){$('div.graph').load("graph.php").fadeIn();});
}
});
请记住,所有表单输入元素都必须设置“name”属性,才能由.serialize()序列化 编写AJAX调用数据部分的方式,
graphContent=“+graphContent+”criteria=“+criteria
将生成类似“graphContent=value1criteria=value2”的字符串,这是不正确的
您可以使用jQuery serialize()方法完成整个表单,并通过以下方式发送:
var formData = $('form#update').serialize();
$.ajax({
type: "POST",
url: "graph.php",
data: formData,
success: function(data){
$('div.graph').fadeOut(function(){$('div.graph').load("graph.php").fadeIn();});
}
});
请记住,所有表单输入元素都必须设置“name”属性,才能由.serialize()序列化 您的问题是使用jQuery
.load()
重新加载图形。这会导致加载一个新的PHP页面实例,而不带任何$\u POST
参数
您已经将页面数据加载到data
变量中。使用类似
$('div.graph').fadeOut(function(){$('div.graph').html(data).fadeIn();});
以获得期望的结果
另外:按照Nik E说的做…您的问题是您正在使用jQuery
.load()
重新加载图形。这会导致加载一个新的PHP页面实例,而不带任何$\u POST
参数
您已经将页面数据加载到data
变量中。使用类似
$('div.graph').fadeOut(function(){$('div.graph').html(data).fadeIn();});
以获得期望的结果
另外:也要照Nik E说的做…如果你真的不需要任何Ajax,只需从graph类的表单中传输数据,也不需要重新加载,而且速度会更快。我最终会在php函数中使用数据,该函数将基于mysql查询绘制图形。啊,好的,现在我明白了,那么,您会遇到什么错误呢?我不明白为什么要将表单数据序列化为一个值,我会在ajax查询中单独编写每个POST参数。没有使用Nick E.在回答中提到的方法,但我认为这更好,可以很好地缩短JS代码。在您的情况下,您不需要任何Ajax,只需从graph类中的表单传输数据,也不需要重新加载,我最终将使用php函数中的数据,该函数将基于mysql查询绘制一个图形