用于调用filename的if语句的AJAX请求

时间:2014-03-14 14:12:56

标签: javascript php ajax

我正在使用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 - 这就是它将如何知道移动到下一个问题。

3 个答案:

答案 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++;
    ... 
}