当我发送重复的参数AJAX调用得到失败当我、参数、AJAX

2023-09-10 15:52:52 作者:听说…

我现在面临很有趣的问题,问题是 -

I'm facing quite funny problem, the problem is--

在我的应用程序有一个功能,增加产品进入购物车的,我已经使用AJAX来实现此功能。当添加不同的产品的(如项目1,项目-2,...,项目-N),正常工作,但是当我再次添加同一项目的(如项目-1,项目-1或项目1,项目-2,...,项目-N,项目-1),它就会失败。

In my application there is a functionality to add products into the shopping-cart, I've implemented this functionality using AJAX. When I add different items (e.g. Item-1, Item-2,..., Item-n) it works fine, but when I add same item again (e.g. Item-1, Item-1 OR Item-1, Item-2,..., Item-n, Item-1) it gets failed

下面是我的AJAX code -

following is my AJAX Code--

   var xmlHttp;
//FUNCTION TO CREATE BROWSER COMPATIBLE OBJECT.
function createBrowserObject()  
{
    if (typeof XMLHttpRequest != "undefined")  //Object for Netscape 5+, Firefox, Opera, Safari,and Internet Explorer 7
    {
            //alert("Obj created");
            xmlHttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)  //Version for Internet Explorer 5 and 6.
    {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
    }
    if (xmlHttp == null)         //Fails on older and nonstandard browsers
    {
        alert("Browser does not support XMLHTTP Request");
    }
}

function addToCartChange() 
{
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") //Check whether Server response came back with no errors.
    {
        document.getElementById("cart_div").innerHTML = xmlHttp.responseText;
    }
}

function addToCart(titleId)
{
    var lastIndex=cartID.substring(parseInt(cartID.lastIndexOf("_"))+1);
    var titleId="product_title_"+lastIndex;
    var priceId="product_price_"+lastIndex;

    var productTitle=document.getElementById(titleId).innerHTML;

    var productPrice=document.getElementById(priceId).innerHTML;
    productPrice=productPrice.substring(parseInt(productPrice.lastIndexOf(";"))+1);
   createBrowserObject();//CREATE BROWSER COMPATIBLE OBJECT.// 

    var url = "../AddToCartServlet";  // URL of server-side resource.//CALL TO THE SERVLET//
    url += "?productTitle=" + productTitle + "&productPrice=" + productPrice;
    xmlHttp.onreadystatechange =addToCartChange;  //ASSIGN RESPONSE HANDLER FUNCTION NAME TO ONREADYSTATECHANGE//.
    xmlHttp.open("GET", url, true);   //INITIATE GET or POST REQUEST. (Here GET)
    xmlHttp.send(null);    // SEND DATA. (Always null in case of GET.)

}

我的AddToCartServlet code为 -

My AddToCartServlet code is--

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    // TODO Auto-generated method stub


    System.out.println("inside AddToCartServlet ");
    String strProductTitle=request.getParameter("productTitle");// TO STORE THE VALUE IN productTitle VARIABLE.//

    String strProductPrice=request.getParameter("productPrice");// TO STORE THE VALUE IN productPrice VARIABLE.//
    AuthenticateServlet.strListItemName.add(strProductTitle);
    AuthenticateServlet.strListItemPrice.add(strProductPrice);

    String strBuffur="<table width='100%' border='0' cellspacing='0' cellpadding='0' class='cart_table'>";
    float floatTotal=0;

    for(int i=0; i < AuthenticateServlet.strListItemName.size(); i++)
    {

        System.out.println("inside loop strListItemName("+i+")= "+AuthenticateServlet.strListItemName.get(i));

        strBuffur=strBuffur + "<tr id='item_"+i+"'>" + "<td width='58%' align='left' valign='middle'><strong><span class='prod_name'>"+AuthenticateServlet.strListItemName.get(i)+"</span></strong></td>"
        + "<td width='19%' align='center' valign='middle'>"
        + "<form id='form1' name='form1' method='post' action=''><label>"
        + "<input type='text' value='1' name='textfield' id='itemQty_"+i+"' class='cart_input' />"
        + "</label></form></td>"
        + "<td width='23%' align='left' valign='middle'><strong>Rs.&nbsp;"+AuthenticateServlet.strListItemPrice.get(i)+"</strong></td></tr>";

        floatTotal=floatTotal+Float.parseFloat(AuthenticateServlet.strListItemPrice.get(i));
    }

    //  System.out.println("Exit for.....");
    strBuffur=strBuffur + "<tr class='total_td'>"
    + "<td colspan='2' align='right' valign='middle'><strong>Total:</strong></td>"
    + "<td align='left' valign='middle'><strong>Rs.&nbsp;&nbsp;"+floatTotal+"</strong></td></tr>"
    + "<tr> <td colspan='3' align='center' valign='middle'> <input name='' type='button' value='Check Out' class='add_cart' onclick='gotoCheckOut()'/></td></tr>"
    + "</table>";
    response.getWriter().println(strBuffur);
}

总之,来电AddToCartServlet被失败时,我再次添加相同的项目。请帮助..谢谢..!

In short, call to AddToCartServlet gets failed when I add Same item again. Please help.. Thanks..!

推荐答案

如果在集合正在使用添加项目名称,即 AuthenticateServlet.strListItemName 设置那么这可能是一个原因失败

If the Collection You are using for adding item name ie AuthenticateServlet.strListItemName is a Set then this can be a reason for failure