【问题标题】:Call JavaScript function from servlet从 servlet 调用 JavaScript 函数
【发布时间】:2015-09-07 11:03:31
【问题描述】:

我想使用 jQuery 从 servlet 调用 JavaScript 函数。

这是我的 JavaScript:

function showerrodailog(){

ShowDialogBox('Alert','No record found.','Ok','', 'GoToAssetList',null);
}

function ShowDialogBox(title, content, btn1text, btn2text, functionText,     parameterList) {

            var btn1css;
            var btn2css;

            if (btn1text == '') {
                btn1css = "hidecss";
            } else {
                btn1css = "showcss";
            }

            if (btn2text == '') {
                btn2css = "hidecss";
            } else {
                btn2css = "showcss";
            }
            $("#lblMessage").html(content);

            $("#dialog").dialog({
                resizable: false,
                title: title,
                modal: true,
                width: '400px',
                height: 'auto',
                bgiframe: false,
                hide: { effect: 'scale', duration: 400 },

                buttons: [
                                {
                                    text: btn1text,
                                    "class": btn1css,
                                    click: function () {

                                        $("#dialog").dialog('close');

                                    }
                                },
                                {
                                    text: btn2text,
                                    "class": btn2css,
                                    click: function () {
                                        $("#dialog").dialog('close');
                                    }
                                }
                            ]
            });
        }

我想从一个 servlet 调用这个函数。我怎么能这样做,我从谷歌尝试并找到了这段代码,但是,我打电话说它说错误 $ 未定义。

我将它用于弹出警报消息。

/* ScriptEngineManager manager = new ScriptEngineManager();
                 ScriptEngine javascriptEngine = manager.getEngineByExtension("js");

                 // Get script from JS File
                 FileInputStream fileInputStream = new FileInputStream("F:\\workspace\\Userlogin\\WebContent\\js\\val.js");
                 if (fileInputStream != null) {
                     BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));

                     javascriptEngine.eval(reader);
                     Invocable invocableEngine = (Invocable)javascriptEngine;

                     // Invoke javascript function named "sayHello" with parameter "Atul"
                     Object object = invocableEngine.invokeFunction("sayHello", "Atul");
                     System.out.println("Result: " + object);*/

                // }

【问题讨论】:

  • 你希望你的 JavaScript 在哪里运行? Servlet 执行服务器端,而 JavaScript(通常)在您的浏览器中执行。您可以根据某些事件触发您的 JavaScript 加载到您的页面中,例如页面加载/文档准备好了吗?由于您使用的是 jQuery,请查看:learn.jquery.com/using-jquery-core/document-ready
  • 你有一个奇怪的要求。为什么需要 servlet 执行和更新视图?

标签: java javascript jquery servlets


【解决方案1】:

您的尝试是错误的,原因如下:
A. JQuery 和其他 JS 库在您在客户端拥有的 DOM 上工作, 您的 Servlet 在服务器端运行。
B. 您的脚本不包含 JQuery 库。

也许您的 Servlet 应该在其输出流上写入一个嵌入其中的 HTML + 脚本作为对客户端的响应,并且该脚本包含 JQuery 内容并使用它?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多