簡體   English   中英

用Java調用JavaScript函數

[英]Calling JavaScript function in Java

我正在嘗試在Java項目中使用javascript代碼發送電子郵件。 數據庫連接工作正常,我已經對其進行了測試。 我在第1行的形式參數(#1)之后收到錯誤: javax.script.ScriptException:sun.org.mozilla.javascript.internal.EvaluatorException:missing)

唯一相關的信息不容易報告:執行的最終 JavaScript字符串。 調試時請確保查看相關數據。 在檢查了最終的字符串之后,很明顯為什么它是不正確的並且對於“修復”來說是微不足道的。

提示:看起來像function sendMail(userblah, foo@bar.qux) { .. ,它實際上是無效的 JavaScript。

問題和解決方案應該是不言而喻的-在函數聲明中使用固定參數 (變量名),並通過invokeFunction調用提供參數 (值)。


解:

// The following parameter names are JAVASCRIPT variable names.
String script = "function sendMail(username, email, body) { ..";

// And pass correct arguments (values), in order. The variables used
// here are JAVA variables, and align by-position with the JS parameters.
inv.invokeFunction("sendMail", username, email, "EMAIL SENT!!!!");

另外, getElementById (無效的ID)是錯誤的,從不使用body參數,而應使用encodeURIComponent (而不是escape )。

不知道這是不是錯字:

    result = request.executeQuery("SELECT user.login, user.email "
                    + "FROM user " + );

您似乎錯過了聲明的結尾。

嗯,您的函數定義:

function sendMail("username","email") {...}

在我看來,JavaScript不是有效的JavaScript,除此之外,您永遠不會調用該函數。

偽代碼,怎么做:

function sendMail(username, email) {
    var link = "jadajada" + email; // .... etc
}
sendMail("+username+","+email+");

暫無
暫無

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

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