2013-12-15 21 views
-1

我現在面臨相當有趣的問題越來越失敗,問題is--AJAX調用,當我重複發送參數

在我的應用程序有將產品添加到購物車的一個功能,我實現了這個使用AJAX的功能。當我添加不同的項目(例如項目-1,項目-2,...,項目-n)它工作正常,但是當我再次添加相同的項目(例如項目-1,項目-1或項目-1 ,項目-2,...,項目-N,它就會失敗

下列項目-1)是我的AJAX代碼 -

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代碼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); 
} 

簡而言之,再次添加Same項時,調用AddToCartServlet會失敗。請幫助..謝謝..!

+0

究竟是什麼錯誤你好嗎.Either服務器端'500'或Java腳本側。其中收藏的理由你的'AuthenticateServlet.strListItemName'? – Deepak

+0

其實我沒有收到任何錯誤,但問題是當我再次添加相同的項目(重複項目)時,它不會將該項目添加到購物車中並僅顯示現有項目。 –

+0

'AuthenticateServlet.strListItemName'這是一個'Set'。這可能是一個原因'Set'不允許重複使用 – Deepak

回答

0

如果Collection您使用添加項目名稱即AuthenticateServlet.strListItemNameSet那麼這可能是失敗

+0

AuthenticateServlet.strListItemName未設置,實際上它是ArrayList as-- public static ArrayList strListItemName = new ArrayList (); // ArrayList存儲購物車項目名稱。 \t public static ArrayList strListItemPrice = new ArrayList (); // ArrayList存儲購物車價格。 –