【问题标题】:Is the $ sign not recognized by Rhino Script Engine?Rhino Script Engine 无法识别 $ 符号吗?
【发布时间】:2013-07-14 11:30:00
【问题描述】:

我正在尝试从我的 java 类中调用 javascript。请在下面找到我的 java 代码:

    File file = new File(".....js");
ScriptEngineManager factory = new ScriptEngineManager();
 // create a JavaScript engine
                                    ScriptEngine engine = factory.getEngineByExtension("js");
                                    engine.put("engine", engine);
                                    // evaluate JavaScript code from String
                                    try{
                                        engine.eval(new java.io.FileReader(file));
                                    } catch (FileNotFoundException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();

                                    } catch (ScriptException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }

我的 javascript 包含一个美元符号 '$' ...所以,一旦我运行我的程序,我就会收到这个错误:

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "$" is not defined. (<Unknown source>#4) in <Unknown source> at line number 4

'$' 是否未定义为 javascript 代码的一部分?脚本引擎不识别它吗?感谢您的帮助。

这是我更新的脚本:

    <script type="text/javascript" src="scripts/jquery.js"></script>;
<script type="text/javascript" src="scripts/jquery-ui.js"></script>;
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.1.min.js">

$.ajax({
                              type: 'POST',
                              url: "../ManageChannel",
                              data: "_country="+country+"&_featured="+featured+"&_webviewLink="+webviewLink+"&_name="+locationName,
                             success:function(data)
                             {
                                 if (data==2)

                                alert("RSS link is required");

                            else{
                                alert("Channel is successfully created!");
                                filePath=[];
                                window.location.href=window.location.href;


                            }

                                }});

【问题讨论】:

  • 你如何定义$?此字符可用于 JavaScript 变量名称,但如果您未定义变量(例如使用库),则它是未定义的。
  • @dystroy $(document).ready(function () {.....}
  • 嗯...你导入 jQuery 了吗?
  • 与流行观点相反,jQuery 不是 ECMAScript 规范的一部分。 DOM 或 XMLHttpRequest 都不是。
  • @user2505456:为什么你认为 Rhino 会解析和/或响应 HTML?那些 &lt;script&gt; 标签不是 JavaScript。 Rhino 使用 JavaScript!这可能与您相关:ejohn.org/blog/bringing-the-browser-to-the-server

标签: java javascript rhino


【解决方案1】:

您的示例 javascript 看起来像 jquery 代码。也许您只需要导入 jquery 库...

关于如何在 Rhino 中处理XMLHttpRequest,请看这个问答:XMLHttpRequest in Rhino?

正如 Joachim 指出的,jqueryDOM API 和 XMLHttpRequest 不是 ECMAScript 规范的一部分。

【讨论】:

  • 我的脚本包含一个 xmlhttprequest 以及一个 ajax 调用和一些对参数的解析
  • 即使是 xmlhttprequest 也没有被脚本引擎识别
  • @user2505456 - 查看 Joachim 的评论。
猜你喜欢
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多