【问题标题】:Uncaught reference error lift ajax is not defined未捕获的引用错误提升 ajax 未定义
【发布时间】:2014-05-09 05:10:03
【问题描述】:

我正在尝试创建 Lift 聊天服务器。我直接从与 Lift 的主网站链接的 Lift 书中获取了所有内容。运行它后,我无法提交消息,因为 liftAjax 未定义并导致我的 chrome 控制台中出现错误。

如果我错了,请纠正我,但 Lift 不应该在启动网站时生成 liftAjax 内容吗?我觉得我可以自己从某个来源导入 liftAjax,它会起作用,但我觉得我不应该这样做。

这是我的 index.html 文件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Home</title></head>
<body class="lift:content_id=main">
    <div id="main" class="lift:surround?with=default;at=content">
        <!-- the behavior of the div -->
        <div class="lift:comet?type=Chat">Some chat messages
            <ul>
                <li>A message</li>
                <li class="clearable">Another message</li>
                <li class="clearable">A third message</li>
            </ul>
        </div>
        <div>
            <form class="lift:form.ajax">
                <input class="lift:ChatIn" id="chat_in" />
                <input type="submit" value="Say Something" />
            </form>
        </div>
    </div>
  </body>
</html>

这是生成的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<div id="main" xmlns="http://www.w3.org/1999/xhtml">
    <!-- the behavior of the div -->
    <div id="F156429460218VSI1GX_outer" style="display: inline">
        <div id="F156429460218VSI1GX" style="display: inline">
            <div xmlns="http://www.w3.org/1999/xhtml">Some chat messages
                <ul>
                    <li></li>
                </ul>
      </div><script type="text/javascript">
// <![CDATA[
/* JSON Func comet $$ F156429460221QEXVXK */function F156429460221QEXVXK(obj) {liftAjax.lift_ajaxHandler('F156429460221QEXVXK='+ encodeURIComponent(JSON.stringify(obj)), null,null);}
// ]]>
</script></div><script type="text/javascript">
// <![CDATA[
var destroy_F156429460218VSI1GX = function() {}
// ]]>
</script></div>

      <div>
        <form id="F156429460223BHVYIM" action="javascript://" onsubmit="liftAjax.lift_ajaxHandler(jQuery('#'+&quot;F156429460223BHVYIM&quot;).serialize(), null, null, &quot;javascript&quot;);return false;">

注意:错误发生在上面一行

<input name="F1564294602245ECYAU" id="chat_in" xmlns="http://www.w3.org/1999/xhtml" />
<input value="Say Something" type="submit" xmlns="http://www.w3.org/1999/xhtml" />
</form>
</div>
</div> 

我只是不确定是什么原因造成的。我刚开始学习Lift,所以我不太了解。我错过了什么吗?

如果您需要更多信息,例如 build.sbt 或其他文件,请告诉我,我也可以发布它们。

【问题讨论】:

  • 对不起,我不知道lift,但是为什么这里有一个scala标签?
  • 实在不清楚你遇到了什么问题。你期待发生什么?你觉得 HTML 应该是什么样子的?另外,您是否收到任何具体的错误消息?
  • @skiwi,Lift 是一个基于 Scala 的 Web 框架,这可能就是它被标记为 scala 的原因。虽然他没有在问题中发布任何代码,但我想答案最终可能会利用它。

标签: scala lift


【解决方案1】:

在我的情况下,我错过了 body 部分,该部分似乎自动来自 liftAjax

<body class="lift:content_id=main">
    <div id="main" class="lift:surround?with=default;at=content">
           ......
    </div>
</body>

但是,在另一种情况下,手动采购jquery 将与注入Boot.scalaJQuery 模块一起使用。

<script id="jquery" src="/classpath/jquery.js" type="text/javascript"></script>

【讨论】:

    【解决方案2】:

    您不需要手动包含 liftAjax 函数,但您需要手动包含 jquery。 Lift 不会自动注入对它的引用,因为它不知道您要使用的版本、缩小级别或位置。尝试添加:

    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    

    到模板的头部。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-27
      • 2011-09-25
      • 2021-11-01
      • 2017-11-22
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多