私のJSPページには、4つの項目が含まれた食品の配列が含まれています。Ajaxレスポンスの出力
ユーザーが配列内にあるテキストボックスに食品名を入力すると、見つかったかどうかを示す4つの文字列が出力されます。
アレイ内の食品の位置によっては、それぞれの文字列で実際の回答が得られます。入力された食品が配列の4番目の要素であれば、AJAXによって書かれた4番目の文字列が正しい答えを返します。
私のスクリーンショットは、入力された値がサモサパヴである場合の出力を示した問題
を示し、2番目の文字列は、右の出力を提供します。第四文字列はので、私はその一つだけと確実にするために必要な変更は何右の出力に
を与え、入力された値がmisalPavある場合の出力を示す
正しい出力がAJAXコールから受信されますか?
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;
}
}
}
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<script type="text/javascript" src="food.js">
</script>
</head>
<body>
<h3>The Chuff Bucket</h3>
Enter the food you want to order
<input type="text" id="userInput" name="input" onkeyup="sendInfo()"></input>
<div id="underInput"></div>
</body>
</html>
%--
Document : index
Created on : 15 Dec, 2016, 7:07:55 PM
Author : KRISHNAJI
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
String food = request.getParameter("food");
String foodArray[] = {"Vada Pav", "Samosa Pav", "Pav Bhaji", "Misal Pav"};
for(int i = 0; i < foodArray.length; i++)
{
if(food.equalsIgnoreCase(foodArray[i]))
{
out.println("Hey we do have " + food);
}
else if (food == "")
{
out.println("Enter a food");
}
else
{
out.println("We don't have " + food);
}
}
%>
</body>
</html>
[1]: https://i.stack.imgur.com/sBHnZ.jpg
[2]: https://i.stack.imgur.com/Xv7fG.jpg
おそらく、あなたのプリントの後にブレークステートメントを置くことができます。この見た目は、アレイ全体で4つのアイテムすべてを繰り返し、各アイテムごとに1回印刷します。 – detellda
Thanks Douglas、if else ifのprint文の後にbreakを使用してください。そうでない場合は、テキストボックスが空白の場合、または配列の最初の項目を入力した場合にのみ正しい出力が得られます。 .jspファイルをうまく編集します。 – krrish