我试图在调查问题的同一区域和页面中显示投票结果,而不重新加载整个页面。我能够得到结果并在新页面中显示它们,但我不知道如何在我有问题的地方替换html并将其替换为带有结果的html。
HTML (带投票问题)
<div id="poll-area">
<!-- Voting poll -->
<fieldset>
<form action="javascript:void(0);" id="pollid" name="myform" method="POST">
<label><input type="radio" name="answer" value="left" id="option_left" />Yes</label>
<label><input type="radio" name="answer" value="right" id="option_right" />No</label>
<input type="submit" name="submit" id="submit" value="Vote" />
<input type="hidden" name="id" value="pollid" />
</form>
</fieldset>
<!-- End voting poll -->
</div>
AJAX 调用以处理民意调查:
var $j = jQuery.noConflict();
jQuery(document).ready(function($j) {
$j("form").submit(function(){
var str = $j(this).serialize();
$j.ajax({
url: "poll_vote.php",
type: "POST",
data: str,
cache: false,
success: function(result) {
window.location.replace("poll_results.php");
}
});
return false;
});
});
我猜测它不是* window.location.replace(“poll_results.php”)*而是我想用poll_results.php中的#pollection-area替换#pop-区域内的HTML,但我不知道怎么做。
民意调查结果的HTML (poll_results.php中包含的内容)
<div id="poll-area">
<fieldset>
<legend>Results</legend>
<ul>
<li>
<span class="total-votes">Yes</span>
<br />
<div class="results-bar" style="width:52%;">
52%
</div>
</li>
<li>
<span class="total-votes">No</span>
<div class="results-bar right-bar" style="width:48%;">
48%
</div>
</li>
<li>
</ul>
<p>Total votes: 100</p>
</fieldset>
</div>
感谢您的帮助!
答案 0 :(得分:1)
最简单但不是最干净的:使用innerhtml和getElementById()
你会得到类似的东西:
var div = getElementById('poll-area'); //The poll itself
div.innerHtml = getElementbyId('answers'); //The answers
请注意,我使用'answers'作为ID,因为您对答案和民意调查使用相同的ID。所以你会得到一个不起作用的嵌套。给你的第一个孩子一个答案()一个叫做“答案”的新id。
如果您了解更多javascript,请使用createElement添加新元素。这将提高速度并且更好,但更先进。
答案 1 :(得分:1)
在 poll_results.php 的输出中,您可以删除ID为“poll-area”的外部div。当它被拉入当前页面时,您不需要重复的ID。
对于你的jQuery,这应该可以解决问题:
success: function(result) {
$j("#poll-area").html(result);
据我所知,当前在poll-area div中出现的任何内容都将被ajax查询的结果覆盖。 (投票选项应消失,结果将显示)
修改(评论摘要): poll_vote.php
应该输出poll_results.php