ReferenceError: $ 未定义 yii2

2024-01-01

在我的视图中添加 JavaScript 会导致ReferenceError: $ is not defined。我认为问题是由于 Yii2 最后在我的页面上注入脚本造成的。如何解决这个问题?

或者如何阻止 Yii2 自动加载脚本文件?

My view

  <?php

   use yii\helpers\Html;
   use yii\helpers\ArrayHelper;
   use yii\helpers\UrlManager;
   use yii\widgets\ActiveForm;
   use backend\controllers\StandardController;

   use backend\models\standard;


   ?>

 <div class="domain-form">

<?php $form = ActiveForm::begin(); ?>

<?php



    <?= $form->field($model, 'clause')->textarea(['rows' => 6]) ?>

    <?= $form->field($model, 'name')->textarea(['rows' => 6]) ?>

    <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
    </div>

<?php ActiveForm::end(); ?>

   </div>

    <script type="text/javascript">
    $("document").ready( function () {
    alert("hi");
    });</script>

我需要获取这个简单的脚本来在页面加载后显示警报。我没有在这里调用任何脚本文件,因为 yii 通过调用在布局中自动加载(我认为)

  AppAsset::register($this);

这会导致脚本文件在页面末尾(在我的自定义脚本之后)注册。

怎么解决这个问题呢?


Yii2 最后在页面上注入脚本(jquery 等)。这是有意且期望的。但这意味着 jQuery 将在您的脚本之后加载,因此当您的脚本运行时,jQuery 还不存在。

快速测试最简单的方法是将 yii-scripts(jquery 等)移动到页面的头部。调整assets\AppAsset.php并添加以下内容:

public $jsOptions = array(
    'position' => \yii\web\View::POS_HEAD
);

Done!


但在生产中,您通常希望脚本最后加载,而是让 Yii2 处理您的 javascript:

$this->registerJs(
    '$("document").ready(function(){ alert("hi"); });'
);

现在 Yii 将处理这个 js 并将其放置在任何重要的内容之后(例如 jQuery)。

然而,您很快就会注意到 IDE 通常不擅长处理这种语言嵌套(PHP 中的 JavaScript),因此语法突出显示可能会被破坏。解决此问题的一种方法是将脚本注册在单独的文件中:

$this->registerJsFile( 'myScript.js' );

如果您想要更多地控制加载脚本的顺序,您可以添加依赖项作为第二个参数,并将其他选项添加为第三个参数:

$this->registerJsFile( 
    'myScript.js', 
    ['\backend\assets\AppAsset'],  
    ['position' => '\yii\web\View::POS_END']
);

如果您出于某种原因绝对希望脚本内联呈现,您可以这样做:

$this->registerJs( $this->renderPartial('myScript.js') );

添加脚本的推荐方法是使用资源包 https://github.com/yiisoft/yii2/blob/master/docs/guide/assets.md。 在看assets/AppAssets.php并将您的 js 文件添加到 $js 数组中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ReferenceError: $ 未定义 yii2 的相关文章

  • WooCommerce - 谢谢和“我的帐户”查看订单页面上的自定义通知

    在 WooCommerce 上我有一个自定义字段days manufacture对于具有不同 整数 值的每个产品 我还有这个代码 可以在购物车页面上显示一条消息 其中的最高值是 生产天数 add action woocommerce bef
  • 使用 Javascript 编辑和保存用户 HTML - 安全性如何?

    例如我有一个Javascript 支持的表单创建工具 您可以使用链接添加元素的 html 块 如输入字段 并使用 TinyMCE 来编辑文本 这些是通过自动保存功能保存的 该功能在特定事件的后台执行 AJAX 调用 被调用的保存函数负责数据
  • PHP:switch 与 if [重复]

    这个问题在这里已经有答案了 哪种形式更有效率 这个 switch var case 1 break case 2 break 或者这个 if var 1 elseif var 2 在性能方面 性能方面完全无关 As PHPBench htt
  • PHP 中 C# 的空合并运算符 (??)

    PHP 中是否有三元运算符或类似的操作符 of C 在 C 中是干净且简短的 但在 PHP 中你必须执行以下操作 This is absolutely okay except that REQUEST test is kind of red
  • 如何在 PHP 中去除字符串中的所有空格? [复制]

    这个问题在这里已经有答案了 我怎么能够strip remove all spaces of a string in PHP 我有一个string like string this is my string 输出应该是 thisismystr
  • 如何用破折号替换所有大写字母,用正则表达式替换所有小写字母?

    如何在 php 中用破折号和小写字母替换所有大写字母 Such as understandRegexBetter to understand regex better 我的 Google fu 和对以下代码的实验并没有让我走得太远 echo
  • cURL 错误 (35):错误:14077458:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 无法识别的名称

    我一直在使用以下代码块使用 cURL 从 HTTPS 网站收集数据 q https www example org for example ch curl init curl setopt ch CURLOPT URL q curl set
  • 如何通过传递国家代码或国家名称在php中获取时区

    我使用一些 api 有国家代码和国家名称 有什么方法可以在 php ini 中获取给定国家代码和国家名称的时区 我有这样的数据 address Object city continent Asia continent code AS cou
  • str_replace 为数组

    我在使用 PHP 函数时遇到一些问题str replace使用数组时 我有这样的消息 message strtolower L rzzo rwldd ty esp mtdsza d szdepw ty esp opgtw d dple 我正
  • 发送蓝色附件

    我尝试发送附件 pdf 文件 我收到电子邮件但没有附件 我尝试过使用https github com sendinblue APIv3 php library blob master docs Model SendSmtpEmail mde
  • 干预/图像上传错误{{图像源不可读}}

    我正在尝试添加个人资料图片上传拉拉维尔 5 1 我用的是Intervention Image打包但当我尝试上传图像时出现此错误 AbstractDecoder php 第 302 行中的 NotReadableException 图像源不可
  • PHP 中 glob() 中的转义空格?

    我在 PHP 中有以下函数 除了名称中带有空格的文件外 该函数运行良好 Good picture jpg例如 这里是 function getphotolist currentalbum photos glob currentalbum J
  • Netbeans (PHP) 中的变量类型提示

    只是好奇 Netbeans 中是否有一种方法可以为常规变量提供类型提示 以便智能感知能够识别它 我知道你可以对类属性 函数参数 返回类型等执行此操作 但我不知道如何对常规变量执行此操作 当您有一个可以返回不同对象类型 如服务定位器 的方法时
  • 如何设置 Zend Cache Storage 的过期时间?

    我想在 Zend 文件系统缓存中存储一 些 XML 并让它在 30 分钟后过期 如何设置缓存持续时间 过期时间 我使用 Zend 缓存作为组件 而不是在完整的 ZF2 应用程序的上下文中 cache Zend Cache StorageFa
  • 使用 AJAX 来回发送信息

    使用 post 你可以向服务器发送信息 但是当你需要从服务器接收信息时怎么办呢 信息如何从可以由 php 变量保存的方式变为可以由 javascript 变量保存的方式 反之亦然 这与您的问题更相关 http docs jquery com
  • php 的 SCORM 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们为一位客户开发了电子学习网站 最近他询问需要 SCORM feed 我不知道我的系统是否与 scr
  • 让 PHP 脚本永远循环执行队列系统中的计算作业

    目前 我有一个永远在我的服务器上运行的 perl 脚本 检查 SQS 是否有要计算的数据 该脚本已经运行了大约 6 个月 没有出现任何问题 所以 现在我想切换到 PHP 的 CLI 并让脚本永远循环在那里 主要是因为我对PHP比较熟悉 Ba
  • Session_set_save_handler 未设置

    我在设置 session set save handler 时遇到问题 我将 php ini 配置为 session handler user 这个简单的测试失败了 Define custom session handler if sess
  • 更新 xampp 中的 ICU 扩展吗?

    我在跑xampp我需要升级ICU php intl 扩展 到最新版本 我下载了54从 ICU 页面 但不确定如何升级它 有一个bin include and lib文件夹 我应该把这些文件放在哪里 我还需要做其他事情吗 要升级 XAMP 安
  • 即使浏览器关闭,如何保持 PHP 会话处于活动状态?

    即使用户不小心关闭了浏览器 如何才能保持用户的会话处于活动状态 例如 Facebook 如果您登录他们的网站并关闭选项卡或浏览器 当您再次打开浏览器并访问 Facebook 时 他们会自动检测活动用户 并且不会将您重定向到登录页面 我怎么做

随机推荐

  • ddply 按 R 中的组求和

    我有一个示例数据框 数据 如下所示 X Y Month Year income 2281205 228120 3 2011 1000 2281212 228121 9 2010 1100 2281213 228121 12 2010 900
  • std::setw 和 unicode 字符

    我的问题如以下最小示例所示 include
  • 如何向此 CSS“切换器”“切换开关”添加文本

    这是实际的 Switcher 生成器 https proto io freebies onoff https proto io freebies onoff 我不清楚如何向事件添加文本 因此 当开关处于默认状态时 会显示某些文本 反之亦然
  • Mathematica 绘图中多个函数的检测和样式设置

    This https stackoverflow com questions 5597566 这个问题让我开始思考 Mathematica 如何检测正在绘制的多个函数 我发现我实在是看不懂这个流程 考虑 Plot 1 Sequence 2
  • 如何为二维数组的 qsort 编写比较器函数?

    我有一个 n 2 大小的数组 我想根据第二列的值使用 qsort 对它们进行排序 include
  • IEquatable,如何正确实施[重复]

    这个问题在这里已经有答案了 我正在使用 net 2 0 和 c 并且我已经在我的类中实现了 IEquatible 接口 如下所示 public MyClass IEquatable
  • 如何计算 char 数组中的元素数量?

    我试图计算数组中的元素数量 并被告知该行 int r sizeof array sizeof array 0 会给我数组中元素的数量 我发现该方法确实有效 至少对于 int 数组而言 然而 当我尝试这段代码时 事情就崩溃了 include
  • 为 Galaxy S8 创建模拟器? - 安卓工作室

    我创建了一个新的硬件配置文件 试图为 Galaxy S8 S8 制作模拟器 我将屏幕尺寸设置为 5 8 6 2 英寸 取决于 S8 还是 S8 尽管事实上这似乎不会影响模拟器 屏幕分辨率设置为 1440 x 2960 就像设备一样 模拟器看
  • 如何将文件分成相等的部分而不破坏单独的行? [复制]

    这个问题在这里已经有答案了 我想知道是否可以将文件分成相等的部分 edit 除了最后一个之外都相等 而不破坏线 在 Unix 中使用 split 命令 行可能会分成两半 有没有一种方法可以将一个文件分成 5 个相等的部分 但仍然只包含整行
  • DirectoryInfo.EnumerateFiles(...) 导致 UnauthorizedAccessException (和其他异常)

    我最近需要枚举整个文件系统 寻找特定类型的文件以进行审计 由于对要扫描的文件系统的权限有限 这导致我遇到了一些异常 其中 最为普遍的是未经授权的访问异常 http msdn microsoft com en us library syste
  • 在 Visual Studio Code 中添加模块的 Python 路径

    我很难指定包含另一个目录甚至同一项目的文件夹中的模块 包的 python 路径 当我尝试导入时出现错误 ModuleNotFoundError 没有名为 感知 的模块 在 Spyder 中 这只需使用 UI 选择 python 将查找的附加
  • 这是一个通用函数指针吗?它危险吗?

    在学习和搞乱函数指针时 我注意到一种初始化 void 函数指针并强制转换它们的方法 然而 虽然我没有收到任何警告或错误 无论是使用 GCC 还是 VS 的编译器 我想知道这样做是否危险或不好的做法 因为我经常在网上看到这种初始化函数指针的方
  • 生成颜色渐变

    我有一个想法以编程方式生成匹配的配色方案 但是我需要能够在给定一组两种颜色 十六进制或 RGB 值 的情况下生成线性渐变 任何人都可以向我提供 伪 代码或为我指明完成此任务的正确方向吗 EDIT 我忘了提及 但我还需要指定 或知道 从颜色
  • 推荐一个 HTML5/Javascript 的开发环境吗? [复制]

    这个问题在这里已经有答案了 可能的重复 用于 JavaScript 开发的 IDE https stackoverflow com questions 788978 ide for javascript development 我想自学 H
  • 如何创建类的实例并从 Bag 对象(如会话)设置属性

    该类将在runtime and values存储在一个Bag类似物体session or ViewBag 现在我想创建一个instance类并设置其属性使用袋子数据 我知道我应该使用reflection 但不知道有没有什么方法开箱即用做这样
  • JQueryUI 滑块在 IE 上不起作用

    我一直在尝试让滑块在控件旁边显示其当前值 本教程http www ryancoughlin com demos interactive slider http www ryancoughlin com demos interactive s
  • 将委托方法放入类别中

    到目前为止我开发了一些应用程序 现在我正在编写一个新的项目 在这个项目中我希望保持代码非常干净 因此很容易找到方法 我想从UI视图控制器 whose view have a UI表格视图作为子视图 我希望有一个名为DetailViewCon
  • 在按钮单击事件中旋转文本

    我需要在单击按钮时以不同角度旋转文本 我需要两个按钮 一个用于顺时针移动文本 另一个用于逆时针移动文本 尝试这个 html
  • Eclipse Subversive 提交变更列表?

    我刚刚创建了一个忽略提交更改列表 如中所述SVN 有没有办法将文件标记为 不提交 https stackoverflow com questions 635446 svn is there a way to mark a file as d
  • ReferenceError: $ 未定义 yii2

    在我的视图中添加 JavaScript 会导致ReferenceError is not defined 我认为问题是由于 Yii2 最后在我的页面上注入脚本造成的 如何解决这个问题 或者如何阻止 Yii2 自动加载脚本文件 My view