如果标题有点不清楚,我很抱歉。基本上,这就是问题所在:我有一个在名为poll.php
. 因此,如果我访问 /poll.php,它会显示该投票。我不包括表单代码,因为它没有任何可能导致此问题的内容,因为它只有单选按钮、文本和提交按钮。我已将表单配置为使用 ajax,因此当我单击提交时,它会提交表单、查询数据库以获取最新数据并以图形形式将其显示给用户,而无需刷新页面。
这是运行以启用 ajax 的 javascript 代码:
$('body').on('submit', '#votePoll', function() {
$.get("/vote.php", $(this).serialize(), function(data) {
$("#content").html(data);
});
return false;
});
如代码所示,表单的 id 设置为“votePoll”。正如我之前所说,如果我只是转到 poll.php,选择一个单选按钮并点击提交,它将执行上面的代码并正常工作。当插入第二个 ajax 阶段时,问题就来了。
显示网页的主文件称为index.php
.
在 index.php 中,我运行以下 javascript 代码来获取在其中创建的表单poll.php
并显示它:
$(function() {
var pollContainer = document.getElementById('pollContainer');
$.ajax({
url:"/poll.php",
type:"POST",
success:function(msg){
pollContainer.innerHTML = msg;
}
});
})
如您所见,表单也是通过 ajax 获取的。注意:如上面的 javascript 代码中所述,存在一个加载表单的 DIV 容器。index.php
它被命名为“pollContainer”。
接下来,当代码执行时,表单(可以在 中看到poll.php
)改为显示在里面的 div 容器中index.php
。
现在,我们的目标是让它的工作方式与我直接访问 poll.php 时的工作方式相同,而是让 ajax 在容器内工作并更新 div 内容,就像它在poll.php
.
然而,问题是每当我点击“提交”时,不仅页面只是刷新而没有做任何其他事情,而且它也无法计算投票并运行“vote.php”。
这是poll.php
生成表单的文件的一部分(显示在 div 容器中index.php
):
print "<div id='content'>
<form method='post' id='votePoll'>
<span><b>
{$qTitle}
</b></span><br>
<div class='radio'>
<label>
<input type='radio' name='option' id='optionsRadios1' value='1'>
{$q1}
</label>
</div>
<div class='radio'>
<label>
<input type='radio' name='option' id='optionsRadios1' value='2'>
{$q2}
</label>
</div>
<div class='radio'>
<label>
<input type='radio' name='option' id='optionsRadios1' value='3'>
{$q3}
</label>
</div>
<input type='submit' class='btn btn-default'>
</form>
</div>";
该文件中的其余代码和变量q1
等不包含在此代码中,但它们的工作是从数据库中检索信息并显示它。
让我感到困惑的是,为什么代码在直接进行poll.php
投票时可以完美运行,但在以index.php
.
如果我犯了一些错误或忘记添加一些东西,请告诉我。
更新:上面发布的两个 JS 代码块都在index.php
页面内引用的单独文件中。