Php Ajax生成的表单在初始请求后不发送更新的值

Php Ajax生成的表单在初始请求后不发送更新的值,php,javascript,html,ajax,Php,Javascript,Html,Ajax,我知道有更实际的方法来实现我在这里试图实现的目标,但如果可能的话,我需要坚持这个模式 我试图将多个HTML文本输入字段中的值发送到Javascript函数。 它在第一次提交时按预期工作。每次Ajax将表单重新加载到容器div中之后,它都会发送原始提交的值,而不是更新的值。我该如何解决这个问题 这就是调用的地方:(drawNewEvent.php的结果输出显示在Div标记中) drawNewEvent.php: <? $calID = $_POST['calID']; ?> <h

我知道有更实际的方法来实现我在这里试图实现的目标,但如果可能的话,我需要坚持这个模式

我试图将多个HTML文本输入字段中的值发送到Javascript函数。 它在第一次提交时按预期工作。每次Ajax将表单重新加载到容器div中之后,它都会发送原始提交的值,而不是更新的值。我该如何解决这个问题

这就是调用的地方:(drawNewEvent.php的结果输出显示在Div标记中)

drawNewEvent.php:

<? $calID = $_POST['calID']; ?>
<h1> Add Event to <? echo $calID;?></h1>
<table border="1"><tr><td>
<br>
<table>
<tr>
<td>Event name:</td><td><input name="name" type="text" id="aname" size="32" maxlength="40" /></td>
</tr><tr>
<td>Date:</td><td><input name="date" type="text" id="date" maxlength="10" value="<?php echo date('Y-m-d'); ?>"/> (YYYY-MM-DD)</td>
</tr><tr>
<?php $hour = date('H'); $hour -= 4;?>
<td>Starting Time:</td><td><input name="sTime" type="text" id="sTime" maxlength="8" value="<?php echo $hour.date(':i'); ?>"/> (HH:MM)</td>
</tr><tr>
<td>Ending Time:</td><td><input name="eTime" type="text" id="eTime" maxlength="8" value="<?php echo ($hour+1).date(':i'); ?>"/> (HH:MM)</td>
</tr>
<tr>
<td>Location:</td><td><input name="location" type="text" id="alocation" size="32" /></td>
</tr>
<tr>
<td>Notes:</td><td><textarea name="notes" id="notes"  rows="10" cols="30"/></textarea></td>
</tr>
</table>
<button type="button" name="add" 
onClick="addEvent(aname.value, date.value, sTime.value, eTime.value, alocation.value, notes.value, <?php echo $calID ?>)">Add Event </button>
</td></tr></table>

嗯,您的
calID
总是一样的(应该是吗?)。您正在发送一个带有URL中相同参数的ajax请求,很可能第二次收到缓存响应,因此第二个ajax请求永远不会通过服务器运行。我建议使用随机变量或可变变量来避免缓存。例如:

var d = new Date();
var n = d.getTime();
xmlhttp.open("POST","cal/draw/drawNewEvent.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("calID="+calID+"&random="+n);

现在,浏览器将您的ajax请求视为不同的请求,并且不会从缓存中返回。让我们从这里调试。您的脚本现在表现如何?

不清楚如何调用函数
newEvent
。你能更新这个来说明这一点吗?我认为这与原始元素ID被反复使用的事实有关,在第一次请求后导致冲突。。。有什么解决办法的建议吗?
<? $calID = $_POST['calID']; ?>
<h1> Add Event to <? echo $calID;?></h1>
<table border="1"><tr><td>
<br>
<table>
<tr>
<td>Event name:</td><td><input name="name" type="text" id="aname" size="32" maxlength="40" /></td>
</tr><tr>
<td>Date:</td><td><input name="date" type="text" id="date" maxlength="10" value="<?php echo date('Y-m-d'); ?>"/> (YYYY-MM-DD)</td>
</tr><tr>
<?php $hour = date('H'); $hour -= 4;?>
<td>Starting Time:</td><td><input name="sTime" type="text" id="sTime" maxlength="8" value="<?php echo $hour.date(':i'); ?>"/> (HH:MM)</td>
</tr><tr>
<td>Ending Time:</td><td><input name="eTime" type="text" id="eTime" maxlength="8" value="<?php echo ($hour+1).date(':i'); ?>"/> (HH:MM)</td>
</tr>
<tr>
<td>Location:</td><td><input name="location" type="text" id="alocation" size="32" /></td>
</tr>
<tr>
<td>Notes:</td><td><textarea name="notes" id="notes"  rows="10" cols="30"/></textarea></td>
</tr>
</table>
<button type="button" name="add" 
onClick="addEvent(aname.value, date.value, sTime.value, eTime.value, alocation.value, notes.value, <?php echo $calID ?>)">Add Event </button>
</td></tr></table>
function addEvent(name, date, sTime, eTime, location, notes, calID){
    alert("name: "+name + "\nDate: " + date + "\nTime: " + sTime + "-" + eTime + "\n Location: " + location + "\n Notes: " + notes + "\n CalID = " + calID);
}
var d = new Date();
var n = d.getTime();
xmlhttp.open("POST","cal/draw/drawNewEvent.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("calID="+calID+"&random="+n);