Ok, could I have some help... function updateMinSale(rowNum) { var tempURL = 'http://127.0.0.1/cfc/calculators.cfc?method=minPriceCalc&productgroupid=2&c ostprice=2'; myRequestPool = new DP_RequestPool(); myRequest = new DP_Request("GET",tempURL); document.getElementById("min" + rowNum).value = WHATGOESHERE; }
For testing I am using the URL set in the tempURL variable, the parameters will change later but will do for now. The CFC returns a simple numeric value like... <wddxPacket version='1.0'><header/><data><number>2.26</number></data></wddxPacket> What would I put in the code in place of WHATGOESHERE to set the value of the form field to (in this example) 2.26? -- Jay -----Original Message----- From: Jim Davis [mailto:[EMAIL PROTECTED] Sent: 14 December 2007 18:13 To: CF-Community Subject: RE: JS HTTP Request? > -----Original Message----- > From: James Smith [mailto:[EMAIL PROTECTED] > Sent: Friday, December 14, 2007 8:13 AM > To: CF-Community > Subject: JS HTTP Request? > > I need to use some complex calculations from a CFC to update a form > field > when a different field is changed. This seems like a fairly simple > matter > of using... > > onChange="getHttp();" It's not going to be quite that simple, but I've a component which will make it much simpler here: http://www.depressedpress.com/Content/Development/JavaScript/Extensions/DP_R equestPool/Index.cfm It's a completely abstracted JavaScript HTTP Request pool - runs in all major browsers and doesn't require any server-side code. On your page you instantiate the pool (at the top, onload(), wherever) and start it's polling mechanism: // Instantiate the Pool myRequestPool = new DP_RequestPool(4); // Start the Interval myRequestPool.startInterval(100); This checks for new requests every 100 ms. (There's also a "stopInterval()" as well which will stop all queued requests from being processed). To make a request you create a "DP_Request" object and add it to the queue using the addRequest() method. At its simplest form (call a page and do nothing) it looks like this: var myRequest = new DP_Request("GET","http://www.mysite.com/Add.htm") myRequestPool.addRequest(myRequest); Requests can be reused over and over, if you like, just by adding them to the queue again. That's not that useful however, so you can also pass parameters to the page being called (as an object containing name=value pairs) and a handler (a function to call when complete which will do something with the result). In your case its simplest to think about this as two functions: one to make the request, one to handle the response. function getHTTP() { var myRequest = new DP_Request( "GET", "http://www.mysite.com/whatever.cfm", null, handleHTTP); myRequestPool.addRequest(myRequest); }; This function (called as in your example) creates a new request and puts it on the queue. The "null" in the request is where input parameters would go. You can include an object here or create one inline using object literal notation (ask if you need more information). The "handleHTTP" (no parens) is the function that will be called with the output from the call. The first argument passed to ANY handler function is the results of the HTTP call. It might look like this: function handleHTTP(results) { document.getElementById("myFormField").value = results; }; This is really simple of course but all it's doing is dumping the results into the field (change this to however you want to use the value). That's it. There are actually a few ways to streamline this but all of them need more explanation that won't really add to the solution. In short tho: +) You could easily reuse the Request object. This is a good idea if the object really doesn't change (as in the example) but gets more dangerous if the properties change. Remember objects are accessed by reference so any changes to the object will affect all of those in the queue waiting to be serviced - this can be useful sometimes but only if you really "get" what's going on. +) The handler function, especially if it's really that simple, could be built inline as an anonymous function (a "closure"). This could simply your code a bit but that's about it. For more complex scenarios this can be life saver however if the handler code needs to change with the circumstances of the call. +) You don't really need function to do the call, you could do all that work right in the "onchange" handler itself (create and add the request, or just add it if you're using a pre-built request) but it could get messy. I'd be happy to help with this further if you want to post a longer snippet of the code you're working on. Jim Davis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Community/message.cfm/messageid:248479 Subscription: http://www.houseoffusion.com/groups/CF-Community/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.5