2012-07-29 95 views
0

我正在嘗試寫下這段代碼。我有一個圖像和一個按鈕。我想在單擊圖像時更改按鈕的值(標題)。誰能告訴我這裏有什麼問題? (如果你發現愚蠢的錯別字忽略它,我無法複製粘貼所有內容)。從javascript傳遞參數到JSP

和關於腳本部分的另一個Q(可能與我的問題有關):request.getParameter(imageId)方法是否真的返回函數的上述參數?

JSP:

<% 

String messageButton = "Click me!"; 

%> 

<%! 

public void changeStatusButton(String i_MessageButton) 
{ 
    i_MessageButton = "You Clicked The Image!"; 
} 

%> 

HTML頭:

<script> 

    button imageClicked(imageId) { 

     <% changeStatusButton(request.getParameter(imageId)) %>  

    } 

</script> 

html正文:

<input type="image" id="greatimage" onclick="imageClicked(id)"/> 
<input id="mybutton" type="button" value="<%=messageButton%>"/> 
+0

這僅僅是我還是你在這裏混合使用服務器和客戶端語言?我也認爲你的onclick =「imageClicked(id) - id是未定義的 – 2012-07-29 01:03:13

+0

它的定義我只是複製粘貼它作爲一個小塊從一個大的代碼和沒有我不混合客戶端服務器。相同的JSP文件,有些值取自一個tomcat服務器 – 2012-07-29 01:06:09

+0

我同意Anze,你不能編寫像'button imageClicked ...'這樣的代碼,那就是客戶端代碼,我認爲瀏覽器不能理解它們 – Pikaurd 2012-07-29 01:20:06

回答

0

所有這一切都將在服務器端執行的腳本小程序中的代碼。沒有Java代碼從服務器中取出,所有出來的都是HTML,即使它們全都在同一個JSP中。你的JSP代碼應該看起來像 -

<% String messageButton = "Click me!"; %> // server-side code 
<script type="text/javascript"> // client side code 
    function imageClicked() { 
     document.getElementById("mybutton").value = "You Clicked The Image!"; 
    } 

</script> 

<input type="image" id="greatimage" onclick="imageClicked();"/> // client side code 
<input id="mybutton" type="button" value="<%=messageButton%>"/> // client side code with <%=messageButton%> evaluated at server side. 

所以當生成HTML代碼,什麼從服務器獲取並在瀏覽器中呈現的是這樣的 -

<script type="text/javascript"> 
    function imageClicked() { 
     document.getElementById("mybutton").value = "You Clicked The Image!"; 
    } 

</script> 

<input type="image" id="greatimage" onclick="imageClicked();"/> 
<input id="mybutton" type="button" value="Click me!"/> 

即使您的變量messageButton不會來客戶端,因爲這是在scriptlet內。