Opened 4 years ago

Closed 6 months ago

#1497 closed Bug (answered)

"undefined $" - jQuery errors

Reported by: matteocisilino Owned by:
Priority: major Milestone: Piwik 0.6.5
Component: UI - UX (AngularJS, twig, less) Keywords: jquery, language, missing output, index, sites
Cc: matteo@… Sensitive: no

Description

Hallo ,
i've recently updated from piwik 6.3 .
I've noticed that can be a problem for the index , with jQuery errors on "undefined $" that point to lines where are present options with international characters , for example thai .

The configuration of my webserver is to output as default "UTF-8" encoding , so the Asian, arabin characters are writtend the rights way , but european character like ò è à ( german, spanish, portoguese ) was replaced by html encoding "à" and so on .
Very strange for an utf-8 page . In the error log nothing appears , so IMHO the problem is just on client-side . I've tried with :
Firefox : 3.6.6 Ubuntu 10.4
Firefox : 2.0.0 Ubuntu 7.10
Chromium : 5.0.375.99 (51029) Ubuntu 10.04
( sorry i don't use finestral(o)s )

To bypass : Deactivate LanguagesManager, and the reactivate it .

Attachments (2)

jquery-not-defined.JPG (87.7 KB) - added by koflert 4 years ago.
empty dashboard with javascript errors
jquery-not-defined-language-manager-disabled.JPG (76.0 KB) - added by koflert 4 years ago.
same result with LanguagesManager disabled

Download all attachments as: .zip

Change History (31)

comment:1 Changed 4 years ago by vipsoft (robocoder)

  • Milestone set to 0 - Piwik 0.6.5

We expect mbstring.func_overload = 0.

Can you check your php.ini or phpinfo(), and tell us if mbstring.func_overload is non-zero?

comment:2 Changed 4 years ago by vipsoft (robocoder)

  • Summary changed from index stop output with jQuery errors to "undefined $" - jQuery errors

comment:3 Changed 4 years ago by vipsoft (robocoder)

Can you check the permissions on the tmp/assets folder (and its contents)? The folder needs to be writeable by the web server user, and obviously be able to read/write/update/delete files in that folder.

(Are merged assets not regenerated when the language is changed?)

comment:4 Changed 4 years ago by matteocisilino

yes all directories are writable .
i've restored simply disable and reanble the LanguagesManger .
Now it's ok .

(Are merged assets not regenerated when the language is changed?)

i've not changed the language , it happened automaticly after upgrade .
I think is a DB issue , because i've tried also new installation on an upgraded DB .

comment:5 Changed 4 years ago by matt (mattab)

(Are merged assets not regenerated when the language is changed?)

I don't think they should be deleted.. should they?

matteocisilino, it is maybe just a problem with a UI string missing encoding. What Piwik language were you using?

were you using SVN version before updating, or simply upgraded from the previous 0.6.3 version?

Changed 4 years ago by koflert

empty dashboard with javascript errors

Changed 4 years ago by koflert

same result with LanguagesManager disabled

comment:6 Changed 4 years ago by koflert

same error for us, we did an upgrade from 0.5.4 to 0.6.4.

If we logon to the backend as admin-user, the website is rendered, but the dashboard is empty. We get the following javascript errors as outlined in the screenshots.

We already deleted the tmp folder, permissions for tmp/* is 777.
Apache is not configured for UTF-8.
mbstring.func_overload = 0

comment:7 Changed 4 years ago by matt (mattab)

can you please send your piwik URL in anonymous here, or send by email login+pwd? I'd like to see the error

comment:8 Changed 4 years ago by koflert

Sure, where should I sent the login+pwd?

comment:9 Changed 4 years ago by matt (mattab)

Hello all,
please send your login + pwd + piwik URL to matt attt piwik.org thanks!

comment:10 Changed 4 years ago by tec

Hi there,

I am having the same issue and and I found a temporary solution:
The javascript files were packed in the wrong order.

I edited tmp/assets/<long number>.js and moved the part with the jQuery library to the beginning of the file - before all jQuery plugins. Shift reload in the browser then made the tab contents load.

I'm not sure how the packaging of the js is implemented, however it should ensure the correct order of the js files.

Maybe this helps fixing the bug.

comment:11 Changed 4 years ago by matteocisilino

In my case , the js is packed in the right way .
/*!

  • jQuery JavaScript Library v1.4.2

and then
/*!

  • jQuery UI 1.8.2

I still viewing strange things .
now the dashboard is white , with the ajax response that isn't rendered , but as before the code is ready in the browser.

comment:12 Changed 4 years ago by matt (mattab)

  • Resolution set to fixed
  • Status changed from new to closed

(In [2637]) Fixes #1497 Hopefully fixing this one by forcing jquery.js, jquery-ui.js etc. to be first in the list therefore in the generated merged JS.

Please try the patch and report if it works for you. thx!

comment:13 Changed 4 years ago by matt (mattab)

(In [2638]) Refs #1497 without the debug code please

comment:14 Changed 4 years ago by matt (mattab)

Pleas replace your piwik/core/AssetManager.php file by this new one: http://dev.piwik.org/trac/browser/trunk/core/AssetManager.php?rev=2638&format=txt and let us know if it fixes the issue as expected.

comment:15 Changed 4 years ago by matt (mattab)

Note: please delete tmp/assets/* to force the js to be regenerated.

comment:16 Changed 4 years ago by tec

I can confirm that I do not experience the issue anymore after replacing core/AssetManager with your new version with the ensureJsFilesSorted() method. Thanks a lot for the quick fix.

comment:17 Changed 4 years ago by koflert

I can also confirm that the replaced file fixes the problem. Thanks a lot, awesome.
(using php 5.2.10)

comment:18 Changed 4 years ago by vipsoft (robocoder)

Does it still work if you replace:

    return array_unique($jsFiles);

with:

    return array_flip(array_flip($jsFiles));

comment:19 Changed 4 years ago by koflert

In the patched core/AssetManager.php file? In which line? I cant find "return array_unique($jsFiles);"

Thanks

comment:20 Changed 4 years ago by tec

@vipsoft Unfortunately it doesn't in my installation. Same Javascript errors (jQuery and $ not defined).

This is what I tried:

        private static function getJsFiles()
        {
                Piwik_PostEvent(self::JS_IMPORT_EVENT, $jsFiles);
                return array_flip(array_flip($jsFiles));
        }

comment:21 Changed 4 years ago by matteocisilino

It doesn't , i'm using php : PHP 5.2.0-8

comment:22 Changed 4 years ago by matt (mattab)

Is there anyone still having issues with this,

  • with the new AssetManager.php file,
  • after deleting tmp/assets/*

anyone still with a JS error?

comment:23 Changed 4 years ago by vipsoft (robocoder)

Ok. It makes sense that it doesn't work with array_flip ... the order that plugin hooks are called by PostEvent isn't guaranteed to be in a particular order.

comment:24 Changed 4 years ago by vipsoft (robocoder)

(In [2705]) Fixes #1511, refs #1497 (refactoring); update phpdocs; add unit test

comment:25 Changed 7 months ago by lippoliv

  • Resolution fixed deleted
  • Status changed from closed to reopened

I do have this issue after moving my Piwik to an new VPS.
My luck: the old VPS will be running piwik for one week from now.

So the DB is on the new VPS and is running fine. The Piwik is on the old and the new VPS, but on the new one its not running in this case.

Can anyone give me support, I have made all of the given tipps here

Tanks all,

lippoliv

PS here's the console from overall-dashboard:
Uncaught SyntaxError: Unexpected token < /index.php?module=Proxy&action=getJs&cb=97b6d5efe49e97d4303feb7993750b30

Uncaught ReferenceError: setRowData is not defined index.php?module=MultiSites&action=index&idSite=1&period=day&date=today

Uncaught ReferenceError: prepareRows is not defined index.php?module=MultiSites&action=index&idSite=1&period=day&date=today

Here from single Page
Uncaught SyntaxError: Unexpected token < /index.php?module=Proxy&action=getJs&cb=97b6d5efe49e97d4303feb7993750b30

Uncaught ReferenceError: $ is not defined index.php?module=CoreHome&action=index&idSite=1&period=day&date=today

Last edited 7 months ago by lippoliv (previous) (diff)

comment:26 Changed 7 months ago by lippoliv

Sorry for reopening, wasn't as hard as it seems...

Just -as admin- go to "Settings > System Check" and have a look to the output.

In my Case it was the non-binary-upload...

  1. Backed up global.ini.php
  2. Re-Downloaded Piwik
  3. Deleted Piwik from WebSpace
  4. Uploaded the fresh Piwik
  5. Uploaded the (in step 1 back-uped) global.ini.php
  6. Visit Piwik-Instance-URL and have fun :)

comment:27 Changed 7 months ago by SteveG (sgiehl)

  • Resolution set to fixed
  • Status changed from reopened to closed

comment:28 Changed 6 months ago by matt (mattab)

  • Resolution fixed deleted
  • Status changed from closed to reopened

comment:29 Changed 6 months ago by matt (mattab)

  • Resolution set to answered
  • Status changed from reopened to closed
Note: See TracTickets for help on using tickets.