6

I have a problem with Yii grid view. for some reason it does not seem to load correctly, even though the script is included (i can see it in the source code). This is the header part of the HTML:

<script src="fileadmin/static/js/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="/module/public/assets/80c0553/gridview/jquery.yiigridview.js" type="text/javascript"></script>
<script type="text/javascript">jQuery(function($) {
 jQuery('#grid-downloads').yiiGridView({'ajaxUpdate':['grid-downloads'],'ajaxVar':'ajax','pagerClass':'pager','loadingClass':'grid-view-loading','filterClass':'filters','tableClass':'def-table','selectableRows':1,'enableHistory':false,'updateSelector':'{page}, {sort}','filterSelector':'{filter}','pageVar':'page'}); 
 });
</script>

I get the Error: TypeError: jQuery(...).yiiGridView is not a function

Any ideas where the problem may lie?

Asped
  • 3,083
  • 4
  • 31
  • 52
  • 2
    maybe it's because jquery or that exact library is included multiple times – Developerium Sep 01 '14 at 10:23
  • 1
    thanks! actually this was really the problem, somehow i got jquery included 2nd time also in the footer of the page, and that broken the code – Asped Sep 01 '14 at 10:38
  • 1
    move jquery js file inclusion to the head section in layount/main.php file. I had mine in footer section of my theme, as I moved it to head section, jquery/js function calling started working :) – iltaf khalid Jan 14 '15 at 10:07

2 Answers2

13

I found the issue.

Actually the problem was, somehow i got jquery included 2 times in the page - the 2nd time in the footer, that is why I did't find our earlier.

Jquery needs to be only 1 time in the page, and it needs to be in the header.

Asped
  • 3,083
  • 4
  • 31
  • 52
0

as Asped said, you must take care of assets and avoid loading jquery once in asset js and again in asset public depends like 'yii\web\JqueryAsset',.

Em.MF
  • 303
  • 3
  • 11