[英]Calling JS function from external file give error in yii2
我正在尝试在yii2项目中调用JS函数,但未定义函数,该JS函数位于名为main.js的文件内,该文件包含在首页的布局中,并且在site / index中具有另一个内部JS调用main.js文件中的函数的代码。 如果我将此功能放在站点/索引中,那么一切都按预期运行,但是如果我将其从外部调用以进行调用,则表示功能未定义。
我的操作页面网站/索引:
<?php
$getcatUrl = Yii::$app->UrlManager->createUrl(['site/getcategories']);
$script = <<< JS
$(document).ready(function(){
$(".sideBarNav").mouseenter(function(){
id = $(this).attr('href');
getCategories(id);
$('.cat-container').css('display', 'block');
});
});
JS;
$this->registerJs($script);
?>
现在在我的主要JS文件中,我有以下内容:
function getCategories(id){
$.ajax({
url: '{$getcatUrl}',
type: 'POST',
data: {category_id: id},
success: function (data) {
data = jQuery.parseJSON(data);
//console.log(data); return;
if (data.length > 0) {
$("#dl-cat").html("");
var content = $("#dl-cat");
firstdata = data[0];
secdata = data[1];
for (var i = 0; i < firstdata.length; i++) {
// var d = $( document.createElement('dl') );
var dl = $("<dl></dl>");
dl.append("<a href='"+firstdata[i].id+"'><dt>"+firstdata[i].name+"</dt></a>");
for (var j = 0; j < secdata.length; j++) {
if (secdata[i][j] !== undefined) {
dl.append("<dd><a href = '"+secdata[i][j].id+"'>"+secdata[i][j].name+"</a></dd>");
}
}
content.append(dl);
}
} else {
console.log('no item for this categories');
}
},
error: function(jqXHR, errMsg) {
// handle error
console.log(errMsg);
}
});
}
请注意,JS文件中的其他代码可以从需要从外部源调用的函数中获得预期效果。我该如何解决此问题,对您的帮助将不胜感激。
我敢打赌,脚本在所有jquery之前,因此该功能“消失了”。 尝试将脚本放置在外部文件中,并确保
尝试«我希望对您有帮助»
$this->registerJsFile(
'@web/js/your_file.js',
['depends' => [\yii\web\JqueryAsset::class]]
);
如果不是完全正确,但可能是函数被放置在调用之后,因此它将是未定义的,因此请尝试确保函数在调用之前被渲染。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.