在我的应用程序中,我有一个对象数组作为关联数组,我是从JSON获得的。这是一个包含每个问题的问题和四个答案的地图。接下来,我试图将一个问题附加到问题div和答案作为单选按钮来回答问题。没有一件事,一切似乎都完美无缺。将内容附加到我的div页面后重新加载。所以我的问题是在这种情况下如何防止页面重新加载。我尝试使用ajax调用,但遗憾的是我失败了。 我的代码如下:
<script>
$(document).ready(function(){
var questions = [];
$.getJSON("/exam/json", function (result) {
var map = {};
var response = result;
for (var i = 0, l = response.length; i < l; i++) {
map[response[i].id] = response[i];
}
$('#nextButton').click(function(){
prepareQuestion(map);
});
});
});
function prepareQuestion(questionList){
var actualQuestionIndex = String(Math.floor(Math.random() * Object.keys(questionList).length) + 1);
$('#question').append(questionList[actualQuestionIndex].question);
if(questionList[actualQuestionIndex].ansc === null){
$('#answers').append("<input type='radio' name='ansa' value='A'>"+questionList[actualQuestionIndex].ansa+"<br>");
$('#answers').append("<input type='radio' name='ansb' value='B'>"+questionList[actualQuestionIndex].ansb+"<br>");
}else{
$('#answers').append("<input type='radio' name='ansa' value='A'>"+questionList[actualQuestionIndex].ansa+"<br>");
$('#answers').append("<input type='radio' name='ansb' value='B'>"+questionList[actualQuestionIndex].ansb+"<br>");
$('#answers').append("<input type='radio' name='ansc' value='C'>"+questionList[actualQuestionIndex].ansc+"<br>");
$('#answers').append("<input type='radio' name='ansd' value='D'>"+questionList[actualQuestionIndex].ansd+"<br>");
}
delete map[actualQuestionIndex];
}
</script>
答案 0 :(得分:1)
我相信这是按钮点击传播。试试这个:
$('#nextButton').click(function(event){
event.stopPropagation()
prepareQuestion(map);
});
答案 1 :(得分:0)
您可能在表单中有按钮。
然后当您单击它时,表单会将页面发回。
由于帖子很慢,它将首先加载JSON,然后重新加载完成。
如果您在onclick属性中定义了函数,则需要添加“return false;”。
onclick="somefunction(); return false;"
否则,event.stopPropagation()
是对的。