I use the following Ajax.Updater code to auto-complete (refresh) the
options within a select box according to text entered into an input
[type=text].

The code is part of a function which is envoke by the 'onkeyup' event
on the input:

new Ajax.Updater(targetSelect.identify(), xhrRequestUrl, {
        method: 'get',
        parameters: {
                match: inputControl.getValue()
        },
        onCreate: targetSelect.disable.bind(targetSelect),
        onSuccess: (function(){
                targetSelect.enable();
        }).bind(targetSelect)
});

The problem: with large data sets, the ajax requests take long time to
process on the server, and then there's network lag, etc. This returns
in (sometimes) the responses come back in the wrong order. An example:

- user types 'abc', which sets off 3 requests, with 'match' param of
'a', 'ab', 'abc' respectively.
- due to server delay/network lag etc, sometimes the response for
'abc' comes back *before* the 'ab'  response
- select box ends up containing all entries match 'ab', rather than
only those matching 'abc'

The solution I've thought of:

Somehow make a callback function which short-circuits (i.e. aborts)
the Ajax.updater object if it's 'match' parameter is different from
the current value of 'inputControl' at the point where it's about to
empty and replenish the select box with the HTML from the response.
Issues:

- Which callback will allow me to intercept Ajax.updater at this
point? Will this even work with Ajax.updater, or do I need to use
Ajax.request and update the contents of the select box element
manually if the condition for doing so are met?
- How can a callback access the 'parameters' which were set for the
request? Can it even? Will I need to duplicate 'match' into some local
variable - and even then how will the anonymous callback function get
at it?

Am I barking up the wrong tree altogether?

Jon

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to