Thanks both Jason and Phil, there's a lot of new things to try there. I'll see if they lead me anywhere, and prevent me from breaking the wall that I have been banging my head against. :)
On Friday, July 27, 2012 4:23:10 PM UTC-4, Jason wrote: > > > Phil > > setting the content of an element via the innerHTML property was > deprecated for the $("elmentid").update(content) function. Or by using > the $("elmentid").insert(content) function if appropriate. > > Jason Westbrook | T: 313-799-3770 | > > > On Fri, Jul 27, 2012 at 1:19 PM, Phil Petree wrote: > >> Jim, >> I shoulda put this in my last email... >> Here are two ways to set the individual fields using prototype: >> $('my_div').innerHTML = szUpdate; >> $('my_form_field').value='what I want the value to be'; >> function success_function(transport) >> { >> var json = transport.responseText.evalJSON(true); >> // php would return: >> // $options = Array('status' => "OK", 'text' => "OK"); >> // $output = json_encode($options); >> // echo $output; >> // it's the status in the Array we're checking... >> if(json.status == "OK") >> { >> // do stuff >> $(activeButton).replace('<font color="green">Subscribed'); >> $('my_div').innerHTML = "<h1>AJAX Response</h1><p>" +json.text >> +"</p>"; >> } >> } >> >> On Fri, Jul 27, 2012 at 4:05 PM, Phil Petree wrote: >> >>> Jim, >>> >>> Did Jason's code not work? >>> >>> And you're right, the examples and docs totally suck... it's like trying >>> to decipher some secret code that someone forgot to let the rest of us >>> "normal" programmers in on. >>> The purpose of AJAX calls is to reduce bandwidth and server hits by >>> reducing the number of page hits. It's easier, cheaper, faster to just >>> send the data the user needs vs the entire page. >>> >>> Prototype has two functions for Ajax calls: Ajax.Updater and >>> Ajax.Request. I stopped using Ajax.Updater for anything other than single >>> element updates. >>> >>> Breaking down an Ajax.Request call for you it would look something like >>> this: >>> >>> var options = { >>> method: 'post', >>> parameters: $('myform').serialize(), >>> onSuccess: success_function, >>> onFailure: ajax_err, >>> on0: ajax_err >>> }; >>> new Ajax.Request( url+".php", options ); >>> function success_function(transport) >>> { >>> var json = transport.responseText.evalJSON(true); >>> >>> // php would return: >>> // $options = Array('status' => "OK", 'text' => "OK"); >>> // $output = json_encode($options); >>> // echo $output; >>> // it's the status in the Array we're checking... >>> if(json.status == "OK") >>> { >>> // do stuff >>> $(activeButton).replace('<font color="green">Subscribed'); >>> } >>> } >>> function ajax_err(transport) >>> { >>> alert("An AJAX error occurred: " +transport.statusText); >>> } >>> >>> >>> On Fri, Jul 27, 2012 at 3:40 PM, Jim Longo wrote: >>> >>>> Thanks Phil, >>>> >>>> I do want to call a javascript function. >>>> But let me try to simplify my problem. >>>> >>>> Here is a page . . . >>>> <div id="myDiv"></div> >>>> <script type="text/javascript"> >>>> new Ajax.Updater('myDiv', 'XYZ.html', {evalScripts: true}) ; >>>> </script> >>>> >>>> Here is the page being called . . . >>>> <script type="text/javascript"> >>>> sayHi = function(){ >>>> alert ('Hi'); >>>> }; >>>> </script> >>>> <input type="button" value="Click Me" onclick="sayHi()"/> >>>> This will work, in the sense that myDiv will remain and the alert >>>> will display. >>>> >>>> My problem is that if I replace *alert* with *document.write* then the >>>> page gets replaced with a new page. I thought the idea behind >>>> AJAX.Updater >>>> was to replace the DIV with new data, or in this case the result of the >>>> function. *So in my newbie logic the DIV should get replaced with the >>>> text generated by document.write.? * >>>> >>>> >>>> I have tried to figure what you mean by using onSuccess, but I fail to >>>> get the right syntax, and it's very hard to find in the docs. I assume >>>> you >>>> mean to call the function as part of the onSuccess parameters. However >>>> the >>>> example above does seem to execute the function from called page, it's >>>> just >>>> that it works with alert but not document.write and this is doesn't make >>>> sense to me (yet). >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Friday, July 27, 2012 10:46:33 AM UTC-4, ppetree wrote: >>>> >>>>> then perhaps we're not understanding what you mean by "passed" >>>>> >>>>> normal process is: >>>>> onSuccess: call a function that processes the incoming data >>>>> onFailure: tell the user what happened >>>>> >>>>> what gets "passed" is data. >>>>> what gets "called" are functions. >>>>> >>>>> having code in an external file indicates to me you want to call a >>>>> function. >>>>> >>>>> I think a little more clarity might help us help you. >>>>> >>>>> On Fri, Jul 27, 2012 at 10:21 AM, Jim Longo wrote: >>>>> >>>>>> Thanks for your response. I'm sorry, I forgot to mention I had tried >>>>>> that. The request is successful (as I mentioned I can pass html and >>>>>> php, >>>>>> just not javascript) >>>>>> >>>>>> >>>>>> On Friday, July 27, 2012 7:35:11 AM UTC-4, ppetree wrote: >>>>>> >>>>>>> Try using the onsuccess on failure parameters in Ajax updater. >>>>>>> >>>>>>> onFailure: function() {alert("bombed");}, >>>>>>> onSuccess: ... >>>>>>> On Jul 27, 2012 12:04 AM, "Jim Longo" wrote: >>>>>>> >>>>>>>> If it helps, I can replace the js with something real simple (an >>>>>>>> alert) and it still won't run in the AJAX page. If I put plain text >>>>>>>> or >>>>>>>> html or php in the external file it will run, but not javascript. >>>>>>>> >>>>>>>> >>>>>>>> > -- You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To view this discussion on the web visit https://groups.google.com/d/msg/prototype-scriptaculous/-/DdzCL1yvk7oJ. 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.