On 05/03/07, Jim Wharton <[EMAIL PROTECTED]> wrote: > Hi, I'm trying to change a bunch of handwritten Ajax stuff to use jQuery's > methods. (I figure, if I'm already including the jquery.js file, I may as > well use the heck out of it.) > > My current code sends a request to a php page and gets back an xml result I > do the standard way of creating a request object(try/catch for MSXML vs XHR) > > here is the code to create my request and callback: > > var http = createRequestObject(); //this just references that object I just > created. > > function ajax ( url, callback ) > { > http.open ( 'get', url, true ); > http.onreadystatechange = callback; > http.send(null); > } > > function sendRequest() { > var url = "getItems.php?cat_id=" + idsource; > ajax( url, handleInfo ); > } > > my handleInfo function does a nice for loop based on an array(object) and > generates table html for each "record": > > function handleInfo() { > if (http.readyState == 1) { > //document.getElementById("itemtable" +idsource).innerHTML = > '<h1>Loading...</h1>' > } > if (http.readyState == 4) { > if (http.status == 200) { > var xmlDoc = http.responseXML.documentElement; > var output; > output = '<table><thead><tr><th>Items > Available</th></tr></thead><tbody>'; > // Create table rows for each record > for (var i=0; i < xmlDoc.childNodes.length; > i++) > { > var linkId = > xmlDoc.getElementsByTagName('item_id').item(i).firstChild.data; > output += '<tr>'; > output += '<td>'+linkId; > output += '<td><a > href="itemdetail.php?item_id='+linkId+'" > >'+xmlDoc.getElementsByTagName('item_name').item(i).firstChild.data+'</a></td>'; > output += '</tr>'; > } > output += '</tbody></table>'; > document.getElementById("itemtable" > +idsource).innerHTML = output; > } > } > } > > Ok, fairly generic routine stuff. Only problem is, I can't bend my mind > around the way to do it in jQuery!!! I have started playing around with the > .get method: > > $(document).ready(function() { > $('#resultcontainer').accordion(); > $("dt").click(function(){ > idsource = $(this).attr("id"); > $.get("getItems.php", {cat_id: > idsource}, function(xml){ > //build a table from xml > results. > var output = > '<table><thead><tr><th>Items Available</th></tr></thead><tbody>'; > var xmlDoc = > xml.documentElement; > //create rows for each result. > for (var i=0; > i<xmlDoc.childNodes.length; i++) > { > var linkId = > $("item_id", xmlDoc).item(i).firstChild.data; > output += '<tr>'; > output += > '<td>'+linkId+'</td>'; > output += '</tr>'; > } > output += '</tbody></table>'; > > $('#itemtable'+idsource).html(output); > }); > }) > }); > > but this seems to cough up errors about linkId not being a function..... Am I > at least on the right path? > > What this code does is everytime one clicks on a "dt" element, it sends the > request based on the id.... (just a number) then it submits the ajax request. > I'm really not sure at all how to deal with the object it returns... so > that's why you see me treating it just like I would any other xml object. > > I'd be happy to post all my code but I don't want to suck up a ton of > bandwidth... this being my first post and all that..... > > (In a future revision of this code, I'll actually let the accordian wait > until the object is returned before I slide it down.....) > > Thanks, > -Jim
Have you looked at the ajax method? I think this may work: $.ajax({ type: "GET", url: "getItems.php", data: {cat_id: idsource}, dataType: "xml", success: function(xml){ //build a table from xml results. var output = '<table><thead><tr><th>Items Available</th></tr></thead><tbody>'; //create rows for each result. for (var i=0; i<xml.childNodes.length; i++) { var linkId = $("item_id", xml).item(i).firstChild.data; output += '<tr>'; output += '<td>'+linkId+'</td>'; output += '</tr>'; } output += '</tbody></table>'; $('#itemtable'+idsource).html(output); } }) Or, perhaps even better (a more jQuery way): $.ajax({ type: "GET", url: "getItems.php", data: {cat_id: idsource}, dataType: "xml", success: function(xml){ //build a table from xml results. var output = '<table><thead><tr><th>Items Available</th></tr></thead><tbody>'; //create rows for each result. $("item_id", xml).each( function() { output += '<tr>'; output += '<td>'+$(this).text()+'</td>'; output += '</tr>'; } ) output += '</tbody></table>'; $('#itemtable'+idsource).html(output); } }) _______________________________________________ jQuery mailing list discuss@jquery.com http://jquery.com/discuss/