Bug Tracker

Opened 9 years ago

Closed 9 years ago

Last modified 8 years ago

#8463 closed bug (duplicate)

Ajax broken in jQuery 1.5.1 on Opera 11

Reported by: andrearo@… Owned by: andrearo@…
Priority: undecided Milestone: 1.next
Component: ajax Version: 1.5.1
Keywords: Cc: miketaylr, jaubourg
Blocked by: Blocking:

Description

This is a bugreport that Ajax() in jQuery 1.5.1 stopped working on Opera 11. It worked perfectly in jQuery 1.4.4, but not after upgrading to jQuery 1.5.1.

The error-callback of the Ajax() function is called, and returns textStatus="error" and errorThrown="No transport".

The problem only occurs in Opera. The other browsers work perfectly.

To reproduce this problem:

  1. Go to Freeciv.net using the latest Opera version.
  2. Click on play Freeciv.net.
  3. Click start single player game.
  4. Enter your name, and click login.
  5. The game then "crashes" because the Ajax() function doesn't return a correct result.

Thanks in advance for helping with this problem! Other than this Opera bug, jQuery 1.5 has been really great to use with Freeciv.net.

Andreas R. www.freeciv.net

Change History (11)

comment:1 Changed 9 years ago by Rick Waldron

Component: unfiledajax
Owner: set to andrearo@…
Status: newpending

Thanks for taking the time to contribute to the jQuery project! Please provide a reduced jsFiddle test case to help us assess your ticket!

Additionally, test against the jQuery 0 GIT version to ensure the issue still exists.

comment:2 Changed 9 years ago by jaubourg

I find it strange it would work in IE seeing as the "No transport" error is typical of a cross-domain request made on a browser that doesn't support CORS (Opera AND IE). Even stranger, if it's a cross-domain request happening, then it shouldn't have worked with 1.4.x (with a different error though).

Like Rick said, a reduced test case would be nice.

comment:3 Changed 9 years ago by mike.hayes@…

Can confirm that this is happening here too, reverting to jQuery 1.4.4 resolves the problem for now.

comment:4 Changed 9 years ago by jan.koester@…

i have same trouble with opera 11.01 and jquery 1.5.1 when i use the load function

comment:5 Changed 9 years ago by addyosmani

Cc: miketaylr jaubourg added

CC'ing Mike Taylor (Opera) and Julian Aubourg (ajax rewrite) for additional comments on this issue.

comment:6 Changed 9 years ago by miketaylr

Can I get a better description of what it means for the game to "crash"? Using Opera 11.10beta, I seem to be able to play the game--though I get errors in the Error Console like:

JavaScript - http://games.freeciv.net/webclient/ Unknown thread js_breakpad reports error: Network error: error 0 error

62

Related?

comment:7 Changed 9 years ago by andrearo@…

Status: pendingnew

After a lot of debugging, I have finally found the cause of this problem with jQuery and Opera. The problem was related to the fact that all Javascript in Freeciv.net is compiled with Google Closure Compiler. If I excluded jQuery 1.5.1 from being compiled through Google Closure Compiler, and included jQuery separately, then the problem disappeared.

Therefore, this bug should probably be renamed to "jQuery 1.5.x doesn't work in Opera when compiled with Google Closure Compiler". I don't know the real cause of this problem, but it seems clear to me that jQuery 1.5 can't be compiled with Google Closure Compiler.

I have just released a new version of Freeciv.net, where the problems have been fixed.

comment:8 Changed 9 years ago by miketaylr

Interesting...jQuery is now using Uglify.js now rather than Closure Compiler. I wonder what breaks it O_O

comment:9 Changed 9 years ago by ajpiano

Resolution: duplicate
Status: newclosed

comment:10 Changed 9 years ago by ajpiano

Duplicate of #7318.

comment:11 Changed 9 years ago by chadkillingsworth@…

This actually turned out NOT to be related to #7318, but instead is an error with Opera's Javascript processing that was triggered by an optimization of Closure-Compiler.

See http://code.google.com/p/closure-compiler/issues/detail?id=390

Note: See TracTickets for help on using tickets.