我正在使用AJAX进行测验以刷新每个问题。我没有在测验中对每个不同的问题进行单独的AJAX调用,而是想知道是否有一种简单的方法可以使用相同的AJAX调用,但每次都会在文件名的末尾添加一个数字。
所以这是基本的AJAX请求:
function nextQuestion()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("wordbank").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","question2.php",true);
xmlhttp.send();
}
正如您所看到的,GET请求会提取一个名为question2.php的文件
xmlhttp.open("GET","question2.php",true);
目前这只是一个替代文件,我真正想做的是这样的事情:
xmlhttp.open("GET","question" i++ ".php",true);
好吧,我说的很糟糕,但我不确定这是否是最好的方法。基本上我想让我的按钮绑定到nextQuestion()
函数,但我想找到一种方法来根据你当前使用的文件生成下一个文件名。
这可能吗?
另一个想法是给每个页面上的按钮一个不同的ID,让nextQuestion()
函数获取该ID并使用它来生成下一个文件。 E.G如果您遇到问题2,该按钮的ID为question2
。 ajax将取最后一位数字(2)并向其添加1,因此调用的文件名为question3.php
- 这就是它将如何知道移动到下一个问题。
答案 0 :(得分:1)
现在,您可以在任何按钮上放置ID,并将其带到正确的页面。
你的JS
function nextQuestion(buttonID)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("wordbank").innerHTML=xmlhttp.responseText;
}
}
var splitID = buttonID.split('_');
var questionID = splitID.pop();
xmlhttp.open("GET","question" + questionID + ".php",true);
xmlhttp.send();
}
你的按钮
<button id="question_2" onClick="nextQuestion(this.id)">Go To Question 2</button>
或
<button id="question_14" onClick="nextQuestion(this.id)">Go To Question 14</button>
答案 1 :(得分:0)
所以用你当前的索引构建一个字符串
xmlhttp.open("GET","question" + i + ".php",true);
答案 2 :(得分:0)
您可以使用当前任务获得全局变量,并执行以下操作:
var current_quest=1;
function nextQuestion()
{
...
xmlhttp.open("GET","question"+current_quest+".php",true);
xmlhttp.send();
window.current_quest++;
...
}