我正在使用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并使用它来生成下一个文件。例如,如果你在问题2,按钮将有一个ID为question2
。ajax将取最后一位数字(2)并将其加1,因此调用的文件名将是question3.php
-这就是它如何知道移动到下一个问题。
现在你可以在任何按钮上放置ID,并让它带你到正确的页面。
你JSfunction 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>
用当前索引创建一个字符串
xmlhttp.open("GET","question" + i + ".php",true);
您可以为当前任务设置一个全局变量,并执行如下操作:
var current_quest=1;
function nextQuestion()
{
...
xmlhttp.open("GET","question"+current_quest+".php",true);
xmlhttp.send();
window.current_quest++;
...
}