Results 1 to 3 of 3

Thread: Comboboxes' ajax proxies should cancel loading before starting a new ajax request

    Thank you for reporting this bug. We will make it our priority to review this report.
  1. #1

    Default Comboboxes' ajax proxies should cancel loading before starting a new ajax request

    Ext version tested:
    • Ext 4.2.2



    Browser versions tested against:
    • All



    DOCTYPE tested against:
    • not relevant



    Description:
    • When I start to type in an editable combobox with ajax proxy, and while it's loading I type further, and the previous request arrives later (which can easily happen because further typing results in a narrower database result set at the backend), then the previous request will override the newer one, and the combobox will have an incostistent state.



    Steps to reproduce the problem:
    • Have an editable combobox with ajax proxy
    • Start typing to trigger a request to the server
    • While it's loading type further
    • Make your setup so that the further request should return sooner then the first.



    The result that was expected:
    • The first request is cancelled and I should only see the result of the latest request



    The result that occurs instead:
    • The later-arriving-but-previously-sent-request will overwrite the newer one's resulting the combobox in an incosistent state.


    This override solves the issue:

    Code:
    Ext.override(Ext.data.proxy.Ajax, {
        doRequest: (function() {
            var ajaxRequest;
    
            return function() {
                var result, Ext_Ajax_request_orig;
    
                if (ajaxRequest) {
                    Ext.Ajax.abort(ajaxRequest);
                }
    
                Ext_Ajax_request_orig = Ext.Ajax.request;
                Ext.Ajax.request = function() {
                    return ajaxRequest = Ext_Ajax_request_orig.apply(this, arguments);
                }
    
                result = this.callParent(arguments);
    
                Ext.Ajax.request = Ext_Ajax_request_orig;
    
                return result;
            }
        })()
    });
    It aborts the ajax request made by Ext.data.proxy.Ajax.doRequest().

  2. #2
    Sencha Premium User
    Join Date
    Nov 2010
    Location
    Chicago
    Posts
    2,339

  3. #3
    Sencha User
    Join Date
    Feb 2013
    Location
    California
    Posts
    11,985

    Default

    If so, it has been addressed in 4.2.3/5.0, from what I can gather from that bug tracker ticket. Looks like we will soon be able to abort a load().

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •