2011-08-02 22 views
2

以下代碼:的scriptlet被執行錯誤

<button type="button" id="button" onclick="<%cart.removeItem(0);%>">Click me</button> 

是假設按鈕被點擊時被執行。但是,頁面是沒有點擊該按鈕刷新時

"<%cart.removeItem(0);%>" 

正在執行。這是爲什麼發生?

乾杯。

繼承人來源全文。

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
    </head> 
    <body> 
    <jsp:useBean id="cart" scope="session" class="myBeans.cart" /> 
    <% 
    cart.addItem("aji", "1000", "1"); 
    cart.addItem("ewer", "200", "1"); 
    cart.addItem("dfwerweji", "10", "1"); 
    cart.addItem("ldsjioi", "1320", "1"); 

    String[] prodNames = cart.getProdNames(); 
    double[] prices = cart.getProdPrices(); 
    int[] qtys = cart.getProdQtys(); 
    double total = 0; 

    for(int i=0; i<prodNames.length; i++){ 
    total += prices[i]*qtys[i]; 
    out.println(prodNames[i]); 
    out.println(" " + prices[i] + " "); 
    out.println("<input type=text name=newQty value=" + qtys[i] + ">"); 
    out.println(" " + prices[i] * qtys[i]); 
    } 
    %> 
    <br/> 
    <button type="button" id="button" onclick="<%cart.removeItem(0);%>">Click me</button> 
    </body> 
    </html> 

回答

2

我認爲你在這裏混合你的語言。我懷疑'購物車'是一個Java對象,你只能修改客戶端的JavaScript對象。你必須有這樣的事情,使其工作:

<script> 
    doRemoveFirst = function() { new Ajax.Request('removeFirst.page'); }; 
</script> 
<button type="button" id="button" onclick="doRemoveFirst();">Click me</button> 

然後有一個名爲「removeFirst」服務器將從Java對象刪除對象的頁面(可能保存在session?),你可以相應地更新你的頁面。

編輯:這是一個圖像來幫助。對角線的所有東西都是客戶端,而所有東西都是服務器端的。

This Image

編輯2:要爲用戶

刪除和修復頁面,我會說像(假設jQuery的),這可能會爲你工作。

$(".item-row").first().remove(); 
$(".item-row").each(function(idx, el) { 
    var elem = $(el).children().find('.index-cell'); 
    elem.text(+elem.text() - 1); 
}); 
+0

感謝您的答覆,有車是一個JavaBean對象。你的代碼,'新的Ajax.Request('removeFirst.page');',什麼是removeFirst.page? – user859385

+0

我已編輯完整源文件。希望能夠讓你更好地理解我的代碼。謝謝 – user859385

+0

@ user859385:您正在混合客戶端和服務器端對象和操作。 「購物車」僅在服務器端可用,而按鈕點擊則在客戶端。我的Ajax.Request(這只是Ajax請求的原型庫簡寫)的一點是回叫服務器,告訴它執行該頁面。在該頁面上,代碼從購物車對象中刪除商品0,然後重新呈現面向客戶端的頁面,注入更新的數據,或者用Javascript隱藏/刪除它。這是否更有意義? –