【问题标题】:Firebug error: jQuery is not defined - in yii appFirebug 错误:jQuery 未定义 - 在 yii 应用程序中
【发布时间】:2012-05-29 19:41:49
【问题描述】:

我正在使用 Yii 框架 v1.1.10r3566。我在 Firebug 中注意到生成的代码正在产生错误。它说“未定义 jQuery”,并且该行有一个函数“jQuery(function($)”。它发生在多个页面上,我相信它会阻止我的 zii 小部件正常运行(以前 CJuiDatePicker 无法正常工作)已经工作)。我没有使用 jQuery 编写任何例程,也没有包含任何其他 javascript 库。生成错误的页面之一上生成的代码是:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="en" />
<!-- blueprint CSS framework -->
<link rel="stylesheet" type="text/css" href="/myapp/css/screen.css" media="screen, projection" />
<link rel="stylesheet" type="text/css" href="/myapp/css/print.css" media="print" />
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="/myapp/css/ie.css" media="screen, projection" />
<![endif]-->
<link rel="stylesheet" type="text/css" href="/myapp/css/main.css" />
<link rel="stylesheet" type="text/css" href="/myapp/css/form.css" />
<script type="text/javascript" src="/myapp/assets/ef86d901/jquery.js"></script>
<script type="text/javascript" src="/myapp/assets/ef86d901/jquery.yiiactiveform.js"></script>
<title>myapp - Login</title>
</head>

我束手无策,不知道生成的代码为何会产生此错误。帮助将不胜感激。

【问题讨论】:

  • 删除 assets 文件夹中的所有内容并刷新。
  • @MukeshSoni,他的 assets 文件夹不是 cached 文件夹,而是一个包含 source 文件的文件夹。跨度>
  • Yii 在 assets 文件夹中查找文件。如果没有找到,它们将被重新生成。删除它们完全没有问题,只是有点延迟。
  • 转到您的资产文件夹一次并检查文件是否存在

标签: jquery yii yii-components


【解决方案1】:

该错误通常是由于未安装 jQuery 框架。看起来您的 jquery.js 是您的 jQuery 框架,因为您提到您自己没有使用任何自定义标记。

快速测试是替换这个:

<script type="text/javascript" src="/myapp/assets/ef86d901/jquery.js"></script>

有了这个:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

注意将 1.7.2 替换为您所需的 jQuery 版本,如使用 Google 的热链接 API Libraries 解释。

如果这可以解决您的问题,请检查您的本地 jQuery 文件的路径或考虑使用 Google 的热链接 API 库,它还有其他好处 read about

【讨论】:

  • 非常感谢!这似乎可以解决问题。虽然,我不确定在 Yii 中该怎么做。另外,我现在收到 $("#profile-form").yiiactiveform 不是函数。我是否也需要替换其他库?
  • 好像也没有安装Yii Framework v1.1.10r3566。您需要检查文件夹路径并重新下载。另外,我不熟悉该脚本,但它可能丢失了,应该放在您正在使用的 Yii 表单上方。由于此问题已解决,请接受我的回答。谢谢!
【解决方案2】:

您应该在所有控制器/动作中包含 jquery,为此,将此代码插入 Controller.php(应用程序中所有控制器的最父级)

public function beforeAction($action)
   {

      $cs = Yii::app()->clientScript;
      $cs->registerCoreScript('jquery');

   }

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,然后我查看了“View Source”,在那里,jquery 是从资产和“js”目录加载的。所以我删除了 registerScriptFile('js/jquery'); 。然后它工作正常,因为它仅从资产加载 jquery

    【讨论】:

      【解决方案4】:

      在我将 components -> assetsManager -> linkAssets 设置为 true 以确保使用的是“最新”版本的资产之后,我遇到了类似的问题。然后我忘记了,并擦除了我的资产文件夹,它删除了所有原始资产!

      我可以很方便地恢复原件(版本控制 ftw)并且一切都恢复了。可能对处于类似困境的其他人有用。

      【讨论】:

        猜你喜欢
        • 2015-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多