簡體   English   中英

通過javaScript將值傳遞給JSP

[英]passing value to JSP via javaScript

boolean canModify   = UTIL.hasSecurity("PFTMODFY") && something;

function name() {   
      I need to pass a value false to something when the page loads.   
}
window.onLoad = name

如何在頁面加載時將值從JavaScript傳遞到JSP

認為您的意思是相反的,讓服務器端代碼輸出一個JavaScript可以在頁面加載時看到的值。

從服務器代碼(JSP)發送到客戶端代碼(JavaScript)

就像輸出其他任何東西一樣輸出它,例如:

 <% boolean canModify = UTIL.hasSecurity("PFTMODFY") && something; %> var canModify = <%=canModify%>; // ^ ^ // | +-- server-side variable // +-- client-side variable 

當JSP實際運行時,返回給客戶端的腳本代碼將只是

jQuery.get("/your/page/url", {"name": "value"});

要么

new Ajax.Request("/your/page/url", {
    method:     "GET", // or, of couse, "POST"
    parameters: {"name": "value"}
});

這是一個布爾值; 如果您需要輸出一個字符串,則需要在其兩邊加上引號,並注意避免對其中應在JavaScript文字字符串中進行轉義的所有字符進行轉義(例如,例如反斜杠以及所用的任何引號字符) )。

從客戶端代碼(JavaScript)發送到服務器代碼(JSP)

但是,如果您真的想在頁面加載時將值發送回服務器(這很奇怪,但是),您必須使用Ajax 如果您打算使用Ajax,我建議您使用jQueryClosurePrototypeYUI其他任何一種庫,因為它們可以為您大大簡化流程。 例如,使用jQuery,此客戶端代碼將值發送回服務器:

 jQuery.get("/your/page/url", {"name": "value"}); 

(或jQuery.post進行更改的內容)。 使用原型,它將是:

 new Ajax.Request("/your/page/url", { method: "GET", // or, of couse, "POST" parameters: {"name": "value"} }); 

我上面提到的所有庫都具有類似的易於使用的機制,用於將數據發送到服務器。 請注意,此機制受“ 相同來源策略”約束。

你並不需要一個庫這一點,當然-任何一個圖書館能做到的,你可以做自己。 我上面列出的功能都是XMLHttpRequest對象的所有包裝( WikipediaMSDNMDC )。 有關示例,請參見鏈接的資源。

非阿賈克斯黑客

我不應該說您需要為此使用Ajax,更像您想要的那樣。 :-)如果由於某種原因您確實不想使用Ajax,可以通過使用JavaScript向頁面中添加一些內容來觸發從服務器進行檢索,然后在該請求中將您的值作為標志包括在內,來實現。 例如:

 var link = document.createElement('link'); link.setAttribute('rel', 'stylesheet'); link.src = "/path/to/jsp?name=" + encodeURIComponent(value); document.getElementsByTagName('head')[0].appendChild(link); 

您的JSP將執行查詢字符串所需的任何操作,然后返回樣式表中有效的任何內容(例如/* */ )。 或者,如果您不想使用樣式表鏈接,請使用img標簽並返回一個透明像素; 等等

但是我不會這樣做 我會用Ajax。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM