Skip to main content

Bug Tracker

Side navigation

#3235 closed bug ()

Opened August 08, 2008 09:58PM UTC

Closed November 11, 2010 11:09PM UTC

Last modified March 14, 2012 09:24PM UTC

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)
  • 3235.diff (0.7 KB) - added by nathanhammond August 15, 2008 03:54PM UTC.

    Better Patch.

  • 3235.html (0.5 KB) - added by nathanhammond August 15, 2008 01:21AM UTC.

    Test Case

Change History (8)

Changed August 08, 2008 10:28PM UTC by flesler comment:1

cc: → attilam, flesler
need: ReviewTest Case

Could you provide a test case ? a minimalistic html file with the requires html and js to reproduce the problem.

Thanks.

Changed August 15, 2008 03:57PM UTC by nathanhammon comment:2

The new patch takes care of the problem and passes all collected information to the error handler as it returns.

Changed August 15, 2008 05:36PM UTC by flesler comment:3

cc: attilam, fleslerattilam, flesler, nathanhammond

Does that test case actually cause an exception ? it seems fine to me.

Changed August 15, 2008 05:36PM UTC by flesler comment:4

component: coreajax

Changed August 15, 2008 07:05PM UTC by nathanhammon comment:5

Replying to [comment:3 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.

Changed August 15, 2008 08:28PM UTC by nathanhammon comment:6

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"); }
    });
});

Changed October 14, 2010 03:14AM UTC by snover comment:7

status: newpending

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!

Changed November 11, 2010 11:09PM UTC by trac-o-bot comment:8

status: pendingclosed

Automatically closed due to 14 days of inactivity.