我的jsp页面包含一系列包含4个项目的食物。
当用户在数组中存在的文本框中输入食物名称时,我得到一个带有4个字符串的输出,说明是否找到它。
根据数组中食物项目的位置,我得到相应字符串中的实际答案。如果输入的食品是数组中的第4个元素,那么AJAX编写的第4个字符串会给出正确的答案。
我的屏幕截图显示了问题
如果输入的值是Samosa Pav,则显示输出,第二个字符串给出正确的输出。
如果输入的值是misalPav,则显示输出,第四个字符串给出正确的输出
我需要做些什么更改才能确保从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;
}
}
}
答案 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语句而打印。所以我现在在循环之外声明你的计数器,并在循环退出后与数组的长度进行比较。这样,如果他们输入的食物没有找到,它最后只会打印一次。如果输入为空白或与食物匹配,则会满足条件并打印正确的响应。计数器将停止递增,并且将小于阵列的长度,在最后一个条件下失败,并且只留下正确的响应。这应该完全回答你的问题。