输出Ajax响应

时间:2016-12-15 14:32:45

标签: javascript html ajax jsp

我的jsp页面包含一系列包含4个项目的食物。

当用户在数组中存在的文本框中输入食物名称时,我得到一个带有4个字符串的输出,说明是否找到它。

根据数组中食物项目的位置,我得到相应字符串中的实际答案。如果输入的食品是数组中的第4个元素,那么AJAX编写的第4个字符串会给出正确的答案。

我的屏幕截图显示了问题

如果输入的值是Samosa Pav,则显示输出,第二个字符串给出正确的输出。

eg showing the output in case the value entered is Samosa Pav,the second string gives the right output

如果输入的值是misalPav,则显示输出,第四个字符串给出正确的输出

showing the output in case the value entered is misalPav,the fourth string gives the right output

我需要做些什么更改才能确保从AJAX调用中只收到一个和正确的输出?



SWIFT_OPTIMIZATION_LEVEL = "-O";

SWIFT_OPTIMIZATION_LEVEL = "-Onone";




var request;

function sendInfo() {
  var v = document.getElementById("userInput").value;
  var url = "index.jsp?food=" + v;

  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    request = new ActiveXObject("Microsoft.XMLHTTP");
  }

  if (request.readyState == 0 || request.readyState == 4) {
    try {
      request.onreadystatechange = getInfo;
      request.open("GET", url, true);
      request.send();
    } catch (e) {
      alert("Unable to connect to server");
    }
  }
}

function getInfo() {
  if (request.readyState == 4) {
    if (request.status == 200) {
      var val = request.responseText;
      document.getElementById('underInput').innerHTML = val;
    }
  }
}     

1 个答案:

答案 0 :(得分:0)

我将在这里编辑重要的位:

String food = request.getParameter("food");
String foodArray[] = {"Vada Pav", "Samosa Pav", "Pav Bhaji", "Misal Pav"};

int i = 0;

for(i = 0; i < foodArray.length; i++)
{
  if(food.equalsIgnoreCase(foodArray[i]))
  {
    out.println("Hey we do have " + food);
    break;
  }
  else if (food == "")
  {
    out.println("Enter a food");
    break;
  }
}

if(i >= foodArray.length)
{
  out.println("We don't have " + food);
}

是的,在我的评论中,我忘记了原始循环中的所有其他条件仍会因为else语句而打印。所以我现在在循环之外声明你的计数器,并在循环退出后与数组的长度进行比较。这样,如果他们输入的食物没有找到,它最后只会打印一次。如果输入为空白或与食物匹配,则会满足条件并打印正确的响应。计数器将停止递增,并且将小于阵列的长度,在最后一个条件下失败,并且只留下正确的响应。这应该完全回答你的问题。