ボタンがクリックされたときに呼び出される関数があります。この関数は、jquery を使用して ajax リクエストを送信します。成功すると、論理的な if ステートメントと else if ステートメントがいくつかあります。Web サーバーは 2 種類のテキスト応答のみを送信できます。「成功」または「エラー」のいずれかです。しかし、これら 2 つの条件をテストすると、失敗するように見えます。サーバーが何を送信しているかを知らせるためにelseステートメントとアラートを追加しましたが、予想どおり、サーバーでサーブレットをプログラムした方法で「成功」または「エラー」のいずれかであり、「成功」のみを送信できます」または「エラー」が応答として返されます。さらに、私のアラートは「成功」または「エラー」を吐き出しています。ここで何が問題なのかわかりません。助けてください。
function deleteRecord(productID, description)
{
var errorMessage = '<td class="red-left">There was an error. <a href="">Please try again.</a></td>';
var successMessage = '<td class="green-left">Product '+productID+' ('+description+') has been deleted sucessfully.</td>';
var data = "productID="+productID+"&description="+description+"&deleteProduct=true";
$.ajax({
type: "GET",
url: "deleteInventoryRecord.mpcs",
data: data,
cache: false,
success: function(info)
{
if(info == 'Success')//This does not work
{
$(".green-left").replaceWith(successMessage);
$("#message-green").fadeIn("slow");
$("#product-"+productID).remove();
}
else if(info == 'Error')//This does not work
{
$(".red-left").replaceWith(errorMessage);
$("#message-red").fadeIn("slow");
}
else//This works always but I dont need it
{
alert(info); //It always says "Success" or "Error"
}
},
dataType: 'text'
});
}
応答を送信するサーブレット コードは次のとおりです。
private void deleteProduct(HttpServletResponse response, String productID) throws IOException
{
try
{
response.setContentType("text/html");
InventoryDAO iDao = new InventoryDAO();
if(iDao.deleteProduct(productID) == true)
response.getWriter().println("Success");
else
throw new RuntimeException("Error");
}
catch(ClassNotFoundException | IOException | SQLException | RuntimeException xcp)
{
response.getWriter().println("Error");
}
}