我一直在寻找互联网和StackOverflow寻求解决方案,但我还没想出来。我有一个表格开头:
<div class="container_12">
<div id="masthead" class="grid_12">
<br/><h1>Form Builder</h1>
</div>
<div id="main-content" class="grid_8" style="margin-top:-5px">
<form action="" id="form" name="form">
<div id="formbuilder" name="formbuilder">
<label>Question:</label><input type="text" name="question1" id="question1"/><br/>
</div>
<button type="button" onClick="loadXMLDoc()">Add New Question</button>
<input type="submit" name="submit" id="submit"/>
</form>
</div>
<div id="sidebar" class="grid_4">
</div>
当按下“添加新问题”按钮时,它执行了这个javascript:
var count = 1; //only executed once on the initial load.
function loadXMLDoc() //executed every time the button is pressed.
{
count++;
var xmlhttp;
if(window.XMLHttpRequest)
{//code for anything better than IE6
xmlhttp=new XMLHttpRequest();
}
else
{//IE6 or lower
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("formbuilder").innerHTML += xmlhttp.responseText;
}
}
xmlhttp.open("GET", "question.php?c=" + count, true);
xmlhttp.send();
}
javascript又从question.php获取一个新的输入字段,这是一个非常简单的php脚本:
<?
echo '<label>Question:</label><input type="text" name="question'.$_GET['c'].'" id="question'.$_GET['c'].'"/><br/>';
?>
现在,乍看之下一切正常。当我按下按钮时,会生成一个新的问题字段并将其附加到表单中。但是,如果在按下按钮之前我在任何问题文本框中都有任何值,那么所有数据都会消失,即使直观,也不应该是这种情况。为了增加乐趣,这只发生在Chrome和Firefox中。出于某种原因,Internet Explorer 9按预期工作。
显然,我做错了什么,但我无法弄清楚它可能是什么。我在很长一段时间内都没有使用过AJAX,并且非常感谢这方面的任何帮助。谢谢!答案 0 :(得分:1)
您可以至少在Chrome和Firefox中使用insertAdjacentHTML,而不是使用innerHTML。
document.getElementById("formbuilder").insertAdjacentHTML("beforeend", xmlhttp.responseText)
从此MDN page了解详情。