Javascript ajax调用php循环,表单仅在第一个循环上不起作用
我有一个名为events.php的页面,它列出了过去和即将发生的事件,使用ajax调用pastevents.php和upcomingevents.php,这两个页面都有收集用户对过去事件的意见以及他们是否会参加未来事件的表单;然后一个句柄将其发送到psqldb 除了循环表单的第一次迭代没有正确提交之外,其他一切都正常。它不会发布并返回一个get on events.php,而不是继续访问pastevents-handle.php;因此,我在url栏中看到了用户的响应,但它从未到达数据库。我制作了一个测试页面,通过复制粘贴所有代码而没有使用ajax,而且效果很好,所以这肯定与ajax有关,但我和我的教授都无法找到答案 我还不知道如何使用jquery,所以请用纯javascript回答 下面是events.php:Javascript ajax调用php循环,表单仅在第一个循环上不起作用,javascript,php,ajax,forms,Javascript,Php,Ajax,Forms,我有一个名为events.php的页面,它列出了过去和即将发生的事件,使用ajax调用pastevents.php和upcomingevents.php,这两个页面都有收集用户对过去事件的意见以及他们是否会参加未来事件的表单;然后一个句柄将其发送到psqldb 除了循环表单的第一次迭代没有正确提交之外,其他一切都正常。它不会发布并返回一个get on events.php,而不是继续访问pastevents-handle.php;因此,我在url栏中看到了用户的响应,但它从未到达数据库。我制作了
<script>
//show past events
function showPastEvents(str) {
document.getElementById('pastevents').style.display = "block";
document.getElementById('hideoldbutton').style.display = "block";
var xhttp;
if (str == "") {
document.getElementById("pastevents").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("pastevents").innerHTML = this.responseText;
}
};
xhttp.open("POST", "pastevents.php?q="+str, true);
xhttp.send();
}
function hidePastEvents() {
document.getElementById('pastevents').style.display = "none";
document.getElementById('hideoldbutton').style.display = "none";
}
//show upcoming events
function showUpcomingEvents(str) {
document.getElementById('upcomingevents').style.display = "block";
document.getElementById('hidenewbutton').style.display = "block";
var xhttp;
if (str == "") {
document.getElementById("upcomingevents").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("upcomingevents").innerHTML = this.responseText;
}
};
xhttp.open("POST", "upcomingevents.php?q="+str, true);
xhttp.send();
}
function hideUpcomingEvents() {
document.getElementById('upcomingevents').style.display = "none";
document.getElementById('hidenewbutton').style.display = "none";
}
</script>
<?php
$conn = pg_connect ('dbname=xxxx') or die ('Connect failed ');
$query = "SELECT eventname, eventdate, location, eventdesc FROM events WHERE eventdate < current_date ORDER BY eventdate;";
$result = pg_query($query);
while ( $row = pg_fetch_assoc($result) ) {
$i = 0;
echo "<tr>"; //table row
foreach ($row as $key => $value) {
if ($i == 0) {
$eventname = $value;
}
if ($i == 1) {
$eventdate = $value;
}
$eventinfo = $value;
echo "<td>"; //1 column each loop
echo "$eventinfo";
if ($i == 1) {
echo date(" (l, F jS)", strtotime($eventdate));
}
echo "<br><br>";
echo "</td>";
$i++;
}
echo "<td>";//1 column while same event
?>
<div>
<form name="pasteventsurvey" action="pastevent-handle.php" method="post">
What did you think of the event?
<select name="pasteventopinion">
<option value="">(Choose one)</option>
<option value="good">Loved it!</option>
<option value="okay">Liked it</option>
<option value="bad">Needs improvement</option>
<option value="time">Time conflict</option>
<option value="NA">NA</option>
</select>
<input type="hidden" name="eventname" value="<?php echo $eventname; ?>">
<input type="submit" name="enter" value="Submit"><input type="reset" name="erase" value="Clear">
</form>
</div>
<?php
echo "</td>";
echo "</tr>"; //-table row
}
pg_close($conn);
?>
//展示过去的事件
函数showPasteEvents(str){
document.getElementById('PasteEvents').style.display=“block”;
document.getElementById('hideoldbutton').style.display=“block”;
var-xhttp;
如果(str==“”){
document.getElementById(“粘贴事件”).innerHTML=“”;
返回;
}
xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
document.getElementById(“PasteEvents”).innerHTML=this.responseText;
}
};
xhttp.open(“POST”,“pastevents.php?q=“+str,true”);
xhttp.send();
}
函数hidePastEvents(){
document.getElementById('PasteEvents').style.display=“无”;
document.getElementById('hideoldbutton').style.display=“无”;
}
//展示即将举行的活动
功能显示ComingEvents(str){
document.getElementById('upcomingevents').style.display=“block”;
document.getElementById('hidenewbutton').style.display=“block”;
var-xhttp;
如果(str==“”){
document.getElementById(“upcomingevents”).innerHTML=“”;
返回;
}
xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
document.getElementById(“upcomingevents”).innerHTML=this.responseText;
}
};
xhttp.open(“POST”,“upcomingevents.php?q=“+str,true”);
xhttp.send();
}
函数hideUpcomingEvents(){
document.getElementById('upcomingevents').style.display=“无”;
document.getElementById('hidenewbutton').style.display=“无”;
}
往事
活动预告
下面是PasteEvents.php(与upcomingevents.php的代码相同):
你觉得这件事怎么样?
(选择一个)
我喜欢!
喜欢
需要改进
时间冲突
NA
将表单放在另一个表单中是非法的
移除外部表单,所有操作都会正常进行,但代码有另一个问题。不要自动关闭开始表单标签(移除末尾的/
)。
<?php
$conn = pg_connect ('dbname=xxxx') or die ('Connect failed ');
$query = "SELECT eventname, eventdate, location, eventdesc FROM events WHERE eventdate < current_date ORDER BY eventdate;";
$result = pg_query($query);
while ( $row = pg_fetch_assoc($result) ) {
$i = 0;
echo "<tr>"; //table row
foreach ($row as $key => $value) {
if ($i == 0) {
$eventname = $value;
}
if ($i == 1) {
$eventdate = $value;
}
$eventinfo = $value;
echo "<td>"; //1 column each loop
echo "$eventinfo";
if ($i == 1) {
echo date(" (l, F jS)", strtotime($eventdate));
}
echo "<br><br>";
echo "</td>";
$i++;
}
echo "<td>";//1 column while same event
?>
<div>
<form name="pasteventsurvey" action="pastevent-handle.php" method="post">
What did you think of the event?
<select name="pasteventopinion">
<option value="">(Choose one)</option>
<option value="good">Loved it!</option>
<option value="okay">Liked it</option>
<option value="bad">Needs improvement</option>
<option value="time">Time conflict</option>
<option value="NA">NA</option>
</select>
<input type="hidden" name="eventname" value="<?php echo $eventname; ?>">
<input type="submit" name="enter" value="Submit"><input type="reset" name="erase" value="Clear">
</form>
</div>
<?php
echo "</td>";
echo "</tr>"; //-table row
}
pg_close($conn);
?>
<?php
$conn = pg_connect ('dbname=xxxx') or die ('Connect failed ');
pg_query_params("INSERT INTO eventsurveypast(eventname, opinion) VALUES ($1, $2)", array($name, $opinion));
echo "email is $idkey, eventname is $name, pastopinion is $opinion";
pg_close($conn);
?>