#3235 closed bug
ajax error event is not being reported in some situations
Reported by: | attilam | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.3 |
Component: | ajax | Version: | 1.2.6 |
Keywords: | Cc: | attilam, flesler, nathanhammond | |
Blocked by: | Blocking: |
Description
When you are trying to call a URL that fails due to such errors as NS_ERROR_DOM_BAD_URI, the error function registered with the ajax settings is not being called.
The reason it is not called is because an exception is thrown during the call at either of the following lines:
xhr.open(type, s.url, s.async, s.username, s.password); or xhr.open(type, s.url, s.async);
To resolve this issue, wrap the above calls in a try/catch block and in the catch block call the following:
jQuery.handleError(s, xhr, null, e);
Attachments (2)
Change History (10)
comment:1 Changed 15 years ago by
Cc: | attilam flesler added |
---|---|
need: | Review → Test Case |
comment:2 Changed 15 years ago by
The new patch takes care of the problem and passes all collected information to the error handler as it returns.
comment:3 follow-up: 5 Changed 15 years ago by
Cc: | nathanhammond added |
---|
Does that test case actually cause an exception ? it seems fine to me.
comment:4 Changed 15 years ago by
Component: | core → ajax |
---|
comment:5 Changed 15 years ago by
Replying to flesler:
Does that test case actually cause an exception ? it seems fine to me.
It does locally for me. It is trying to request http://jquery.com when I'm on localhost. I'm updating the patch to add a test.
comment:6 Changed 15 years ago by
I'm having trouble figuring out why adding a test for this one is causing another test to fail to start (pass-through request object). The whole test suite works just fine without adding in the new test, so I'm obviously doing something wrong.
What I'm working off of (appears right after the error callbacks):
test("jQuery.ajax() - xhr.open error callbacks", function() { expect( 3 ); stop(); jQuery('#foo').ajaxStart(function(){ start(); ok( true, "ajaxStart" ); }).ajaxStop(function(){ ok( true, "ajaxStop" ); }).ajaxSend(function(){ ok( true, "ajaxSend" ); }).ajaxComplete(function(){ ok( true, "ajaxComplete" ); }).ajaxError(function(){ ok( true, "ajaxError" ); }).ajaxSuccess(function(){ ok( false, "ajaxSuccess" ); }); jQuery.ajax({ type: "GET", dataType: "html", url: url("http://jquery.com"), beforeSend: function(){ ok(true, "beforeSend"); }, success: function(){ ok(false, "success"); }, error: function(){ ok(true, "error"); }, complete: function(){ ok(true, "complete"); } }); });
comment:7 Changed 13 years ago by
Status: | new → pending |
---|
This ticket has been marked as missing a test case. In an effort to reduce the number of outstanding tickets in the bug tracker, it will be closed automatically in 30 days. In order to prevent this from happening, please provide a working test case. If a test case has already been provided and our records are wrong, please respond to the ticket so that it can be fixed. Thank you!
comment:8 Changed 13 years ago by
Status: | pending → closed |
---|
Automatically closed due to 14 days of inactivity.
Could you provide a test case ? a minimalistic html file with the requires html and js to reproduce the problem. Thanks.