我正在使用Yii Framework 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>
我的智慧结束,并且不知道为什么生成的代码产生了这个错误。帮助将不胜感激。
答案 0 :(得分:3)
该错误通常是未安装 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
答案 1 :(得分:2)
您应该在所有控制器/操作中包含jquery,为此,将此代码插入Controller.php(应用程序中所有控制器的大多数父级)
public function beforeAction($action)
{
$cs = Yii::app()->clientScript;
$cs->registerCoreScript('jquery');
}
答案 2 :(得分:1)
我遇到了同样的问题,然后我查看了“View Source
”,其中jquery
已从资源和“js
”目录中加载。所以我删除了registerScriptFile('js/jquery');
。然后它工作正常,因为它只从资产加载jquery
。
答案 3 :(得分:0)
在设置组件后,我遇到了类似的问题 - &gt; assetManager - &gt; linkAssets为true以确保使用“最新”版本的资产。然后我忘记了,并擦除了我的资产文件夹,删除了所有原始资产!
我轻松地恢复了原件(版本控制ftw)并且全部恢复了。对处于类似困境的其他人可能有用。