Javascript 调用带有if语句的文件名AJAX请求
我正在用AJAX做一个小测验来刷新每个问题。我想知道是否有一种简单的方法可以使用相同的AJAX调用,但每次在文件名的末尾添加一个数字,而不是针对测验中的每个不同问题单独调用AJAX 下面是基本的AJAX请求:Javascript 调用带有if语句的文件名AJAX请求,javascript,php,ajax,Javascript,Php,Ajax,我正在用AJAX做一个小测验来刷新每个问题。我想知道是否有一种简单的方法可以使用相同的AJAX调用,但每次在文件名的末尾添加一个数字,而不是针对测验中的每个不同问题单独调用AJAX 下面是基本的AJAX请求: function nextQuestion() { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpReques
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);
var current_quest=1;
function nextQuestion()
{
...
xmlhttp.open("GET","question"+current_quest+".php",true);
xmlhttp.send();
window.current_quest++;
...
}
好吧,我的措辞很糟糕,但我不确定这是否是最好的方式。基本上,我想将我的按钮绑定到nextQuestion()
函数,但我想找到一种方法,根据当前使用的文件名生成下一个文件名
这可能吗
另一个想法是为每个页面上的按钮提供不同的ID,并让
nextQuestion()
函数获取该ID并使用它生成下一个文件。例如,如果您正在回答问题2,则按钮的ID为question2
。ajax将取最后一个数字(2)并加上1,因此调用的文件名将是question3.php
——这就是它知道如何移动到下一个问题的方式。因此,用当前索引构建一个字符串
xmlhttp.open("GET","question" + i + ".php",true);
您可以在当前任务中使用全局变量,并执行如下操作:
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++;
...
}
现在,您可以在任何按钮上放置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>
进入问题2
或
转到问题14
看起来应该使用javascript标记,而不是jquery。你至少在使用jQuery吗?!抱歉,我将删除它。我将使用类似于id=“question_2”
的方法,然后您可以执行类似于var splitID=elm.id.split(“"”)的操作然后var myID=splitID.pop()
@cmorrissey这听起来是个好主意,但您愿意进一步开发它并将其作为答案发布在线程中吗?对不起,我明白你的意思,但我以前没有使用过这些函数,所以很高兴看到它工作,也许是在JS小提琴中。这很好,但我只是让它更复杂了。我忘了每个问题都有答案页。因此,Question1页面上的按钮需要将您带到question1a.php。然后,问题1a.php上的按钮将带您进入问题2。这个脚本还可以吗?如果拆分是基于\uu
,那么只要ID是疑问项,它就应该可以工作?@Francesca这是正确的,ID中最后一个\u
之后的内容都可以正常工作,它可以工作。:)