Hi Scott, thanks very much for your elaborate writing. This should give me enough to work on it and get it done. I am rather new to jQuery and ajax altogether - so that my code wouldn't get a 10 I understand ;-)
Thanks for your evaluation on this. I did install Fiddler & Firebug Lite and got some info from that - but by far not enough to understand what goes wrong. I will rework on this and at least post back when it works. Thanks again. Henjo On Dec 14, 11:41 pm, Scott Sauyet <scott.sau...@gmail.com> wrote: > On Dec 14, 4:33 pm, Henjo <henjohoek...@gmail.com> wrote: > > > Here's the link to the website, it is the product wizard > > form:http://bit.ly/7v8pHu > > Okay, if you haven't used Fiddler [1], it's pretty useful for testing > HTTP request on IE, something like LiveHTTPHeaders for Firefox, and > more general. > > The first thing I found is that IE isn't even submitting the second > request. It's a little hard to try to build my own version of this to > determine why, but you might want to either use Firebug Lite [2] as > someone suggested in another thread or simply add some alerts to see > how far it gets. You should be able to quickly nail down whether it > gets to the jQuery ajax call at all. If it does, you probably can > supply more information for this list. If not, hopefully the line it > stops on can supply you with help. > > But I'm going to suggest that you rethink the code design altogether. > Rather than returning the whole set of select elements as HTML, I > would suggest that you return some JSON, either the data for all three > select boxes or the data for each successive one. > > Then I think you could write a function named, say, "linkedDropdowns", > which you would use like this: > > linkedDropdowns("option1", "option2", function() { > return {option1: $("#option1 select").val()}; > }); > linkedDropdowns("option2", "option3", function() { > return {option2: $("#option2 select").val()}; > }); > > This function would bind the change event on the element named by the > first argument to a function that merged the results of calling the > third argument with your common data ({L: TYP03_LANG}) and then > perform an ajax call using that merged data. The success function of > that ajax call would update the element named by the second argument > using the JSON data supplied, and perform the scrolling or hiding > necessary for your UI. It would probably delegate the updating to > another function which you could also use to populate the initial > list. > > This would make it easier to add additional steps as needed, or to > return something additional in the JSON that says there are no > additional steps. The deeply nested code you've got is likely to be > difficult to maintain. > > I don't have time to try to code something like this myself now, but > the main code might look something like this: > > var defaults = {L: TYP03_LANG}; > > function updateSelect(select, data) { > // loop through the results in data creating the inner HTML > for the select box > $("#" + select).html(myHTML); > // hide all the select boxes (perhaps with visibility and size > rather than "hide"), then reset the current one to visible > } > > function linkedDropdown(select1, select2, fn) { > $("#" + select1).change(function() { > $.get("index.php?eID=tx_knowledgebase_pi1", $.extend > (defaults,fn()), function(data, textStatus) { > // if good text status > updateSelect(select2, data); > }, "json") > }); > } > > $.get("index.php?eID=tx_knowledgebase_pi1", defaults, function > (data, textStatus) { > updateSelect("option1", data); > }); > > linkedDropdowns("option1", "option2", function() { > return {option1: $("#option1 select").val()}; > }); > linkedDropdowns("option2", "option3", function() { > return {option2: $("#option2 select").val()}; > }); > > Of course this is probably full of typos, and maybe it wouldn't work > at all for your case, but I think it would be easier to write > something reusable like this and then use if a few times in your code > than to do this deeply nested, and very fragile-looking code. > > Good luck, > > -- Scott > > [1]http://www.fiddler2.com/fiddler2/ > [2]http://getfirebug.com/lite.html