【问题标题】:Yii is not auto including jqueryYii 不是自动的,包括 jquery
【发布时间】:2012-04-24 17:39:28
【问题描述】:

我对 Yii 和 Jquery 有一个奇怪的问题:

当我在 localhost Yii 上打开一个使用 ajax/jquery 的页面时,Yii 会自动将资产包含调用添加到页面:

<link rel="stylesheet" type="text/css" href="/PATH/assets/f72b359d/style.css" />
<script type="text/javascript" src="/PATH/assets/2e442e1a/jquery.js"></script>
<script type="text/javascript" src="/PATH/assets/2e442e1a/jquery.cookie.js"></script>

但是,当我在服务器上运行相同的代码时,Yii 并没有这样做,因此没有可用的 Jquery。

如果有人能找到解决问题的方法,我将不胜感激。

【问题讨论】:

  • 我从未使用过 Yii,但这是我的猜测,尝试使用绝对路径而不是相对路径?
  • “不做”是什么意思?标签根本不在&lt;head&gt; 内吗?
  • 或者尝试使用 Google CDN(内容交付网络)来服务 jQuery:ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
  • 无法保证 YII 会将资产放在服务器上与 localhost 上相同的位置。你确定路径是对的吗? src="/PATH/assets/2e442e1a/jquery.js" 等路径中的 2e442e1a 部分将发生变化
  • 不要将 Yii 的资产包含在 src="/PATH/assets/2e442e1a/jquery.js" 这样的路径中。您应该通过 Yii::app()->getClientScript() 获得的 CClientScript 方法包含/注册 JS 代码。

标签: php jquery yii


【解决方案1】:

您似乎没有以正确的方式注册 jQuery。您必须在 &lt;/head&gt; 标记之前的 /protected/views/layout/main.php 中添加以下行:

<?php Yii::app()->clientScript->registerCoreScript('jquery'); ?>

它会自动加载 jQuery。请记住,如果 YII_DEBUG 标志打开,它将加载非缩小版本,当停用(在生产中)时,它将加载缩小版本。希望这能解决您的问题。

【讨论】:

  • 其实这条线的位置并不重要。您可以将它放在控制器、视图等中。但我认为这不是问题
  • 这就是解决方案。我没有明确注册 jQuery,因为它工作正常,所以我什至不知道我应该这样做。我刚刚想到它正在工作,因为 Yii 调试工具栏为我包含了 jQuery,并且该工具栏在服务器上已关闭。
【解决方案2】:

如果一切都在您的本地计算机上运行,​​则可能是权限问题

您是否检查过 /assets 在您的服务器上是可写的?

Yii 在这个目录中发布它运行时需要的资产

【讨论】:

  • 这是我检查的第一件事,所有目录都是可写的。
猜你喜欢
  • 2013-10-18
  • 2012-01-28
  • 2014-02-10
  • 2012-12-11
  • 2010-11-22
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多