Javascript 调用带有if语句的文件名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

我正在用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);
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
之后的内容都可以正常工作,它可以工作。:)