2011-08-02 10 views
2

다음 코드를 실행됩니다. 그러나스크립틀릿 잘못

"<%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

여기 언어를 혼합한다고 생각합니다. 나는 '카트'가 자바 객체라고 의심하고 클라이언트 측에서만 자바 스크립트 객체를 수정할 수 있습니다. 당신은 그것이 작동되도록하려면이 같은 뭔가를해야 할 것입니다 :

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

그런 다음 자바 객체에서 해당 개체를 제거합니다 ', removeFirst와'라는 서버에 페이지가 (? 어쩌면 세션에서 유지)하고 수행 할 수 있습니다 그에 따라 페이지를 업데이트하십시오.

수정 : 다음은 도움이되는 이미지입니다. 대각선의 모든 것은 클라이언트 측이고 모든 것이 서버 측입니다.

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로 숨기거나 삭제합니다. 그게 더 합리적입니까? –