Yii、jquery和javascript包含…混乱

Yii、jquery和javascript包含…混乱,javascript,jquery,yii,Javascript,Jquery,Yii,交叉张贴,但有时人们在这里回答得更快 我对Yii处理jquery和其他javascript文件的方式完全感到困惑 这是有效的: <script type="text/javascript"> jQuery(document).ready(function() { jQuery('#Event_recuring_nature, #Event_venue, #Event_expected_attendance, #Event_age_group, #Event_s

交叉张贴,但有时人们在这里回答得更快

我对Yii处理jquery和其他javascript文件的方式完全感到困惑

这是有效的:

<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery('#Event_recuring_nature, #Event_venue, #Event_expected_attendance, #Event_age_group, #Event_state, #Event_gender, #Event_ethnicity, #Event_exclusivity, #Package_cash_product_sponsorships, #Event_vanue_signature, #Event_logo_on_step_and_repeat, #Event_inclusion_in_press, #Event_ad_space, #Event_inclusion_in_event_materials, #Package_category_exclusivity, #logo_on_signature, #Event_proposed_events_included, #Event_dependant_on_sponsorship, #Event_sponsorship_type, #Event_attendee_professions, #Event_attendee_income').yaselect();
    });
</script>
<script type="text/javascript" src="/js/libs/jquery-ui-datetimepicker.js"></script>
<script type="text/javascript" src="/js/event_create.js"></script>
<script type="text/javascript" src="/js/slider.js"></script>
<script type="text/javascript" src="/js/other_social.js"></script>
<script type="text/javascript" src="/js/package.js"></script>
(我知道baseUrl现在指向/js,但尝试使用

'baseUrl'=>Yii::app()->basePath . '/assets/js/libs' 
也根本没有加载jquery

请帮帮我!我是Yii的新手,我对这件事已经失去了理智。谢谢

编辑:这是代码生成的内容:

<script type="text/javascript" src="/js/libs/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/assets/ab20866e/jquery.yiiactiveform.js"></script>
<script type="text/javascript" src="/assets/2dfe5520/js/libs/jquery-ui-datetimepicker.js"></script>
<script type="text/javascript" src="/assets/2dfe5520/js/event_create.js"></script>
<script type="text/javascript" src="/assets/2dfe5520/js/slider.js"></script>
<script type="text/javascript" src="/assets/2dfe5520/js/other_social.js"></script>
<script type="text/javascript" src="/assets/2dfe5520/js/package.js"></script>
<script type="text/javascript" src="/assets/2dfe5520/js/libs/jquery-ui-1.8.20.custom.min.js"></script>
<script type="text/javascript" src="/assets/2dfe5520/js/libs/jquery.yaselect.min.js"></script>
<script type="text/javascript" src="/assets/2dfe5520/js/script.js"></script>


对我来说,第二行,/assets/ab20866e/jquery.yiiactiveform.js看起来可疑,因为它具有不同的资产id。

虽然我面前没有您的布局文件,但在脚本文件注册之前,您的布局似乎有
$content

因此,会先加载视图中的脚本,然后加载模板中的脚本。发生这种情况时,会加载datetimepicker,但会报告错误,因为jquery ui尚未加载。请确保在
$content
之前加载模板中的脚本

或者,您可以通过指定位置参数,强制视图中加载的脚本位于主体中,而不是头部,例如:

<?php Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl . '/js/libs/jquery-ui-datetimepicker.js', CClientScript::POS_BEGIN); ?>


>P>另一个需要考虑的是强制Yii从一开始就加载jQuery,如:

cs()->registerCoreScript('jquery');
您也可以像这样加载jQuery UI:

cs()->registerCoreScript('jquery.ui');

我发现这在加载其他jQuery库和文件时解决了很多RegisterScript文件POS_BEGIN/POS_HEAD问题(如在ernies answer中)

By'while this not'它是如何工作的?您的浏览器控制台中是否有任何特定错误?js文件的路径正确吗?谢谢Stu,[11:22:08.697]TypeError:$.datepicker未定义@[11:22:09.232]TypeError:$.timepicker未定义@是控制台中显示的内容。不知何故,包含顺序出错了……路径都很好,我可以单击每个路径上的页面源并加载它们。我怀疑生成了什么!因此最终发生的是页面未正确呈现,javascript无法工作(onclick functions等)是的!!!谢谢ernie,感谢你的解释,我也明白发生了什么事!谢谢!不知道什么是
$this assetsBase
,但一般情况下,你应该把
Yii::app()放在->请求->基本URL
在资源路径之前。啊,这是真的…我的基本控制器中有AssetBase,但这不是Yii标准…更新答案。
<?php Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl . '/js/libs/jquery-ui-datetimepicker.js', CClientScript::POS_BEGIN); ?>
cs()->registerCoreScript('jquery');
cs()->registerCoreScript('jquery.ui');