[Proto-Scripty] Re: eval Javasvript in response text

2011-04-08 Thread T.J. Crowder
Hi,

 well. I read in the docs that pure javascript returned gets eval'd and
 processed, but that isn't what I am experiencing.

Those same docs[1] say that it's turned off by default. ;-) You need
to specify `evalScripts: true` in the options you pass into
`Ajax.Updater` to tell it to turn it on.

But you have another problem: Your script is calling `document.write`.
You can't use `document.write` after the initial parsing of the page
is done (or rather, you *can*, but it won't do what you want it to do
-- instead, it will completely tear down the entire page and start a
new one). Just have the PHP output the actual HTML you want to use,
rather than outputting script that then outputs HTML. If you need to
output something different based on a client-side piece of
information, either pass that information to your PHP script and
handle the branching there, or have the result return placeholder
elements that you then update by making calls to Prototype's
`Element#update` and such. Here's a gratuitous example: http://jsbin.com/ofate4

[1] http://api.prototypejs.org/ajax/Ajax/Updater/

HTH,
--
T.J. Crowder
Independent Software Engineer
tj / crowder software / com
www / crowder software / com

On Apr 7, 4:41 pm, cszalaj csza...@gmail.com wrote:
 We are using the Ajax.updater.  A php script determines the response
 that is returned to the updater to be passed to the div for
 updating. In the case that the success message is returned upon
 successful form submission, we need some javascript to be processed as
 well. I read in the docs that pure javascript returned gets eval'd and
 processed, but that isn't what I am experiencing. The php function
 that returns the script is:

 public function etag_thanksQuickContact($domDoc) {
     return 'script type=application/
 javascriptdocument.write(h1Thank You/h1pThank you for
 contacting us./p);/script';
   }

 This is simplified to for testing purposes. The real script that I
 want eval'd will include a few other statements, but I am using this
 to make sure that the script is running properly.

 The Ajax.updater javascript we have is:
 function qcSubmit() {
   new Ajax.Updater('qcContent', '/h/contact/QuickContact', {
     parameters: {
       name: $F('name'),
       email: $F('email'),
       telephone: $F('telephone'),
       comment: $F('comment')
     }
   });

 }

 If I write the PHP function to just return the thank you text, and not
 a javascript that prints it, then it returns fine. When I try to write
 it with Javascript, it isn't eval'ing. What do I need to do
 differently?

-- 
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.



[Proto-Scripty] Re: eval Javasvript in response text

2011-04-08 Thread T.J. Crowder
If it's not obvious, that example link was to a page that loads
another resource via Ajax.Updater. The script is, of course, in that
other resource, which is here:
http://jsbin.com/ufaji5

-- T.J. :-)

On Apr 8, 2:37 pm, T.J. Crowder t...@crowdersoftware.com wrote:
 Hi,

  well. I read in the docs that pure javascript returned gets eval'd and
  processed, but that isn't what I am experiencing.

 Those same docs[1] say that it's turned off by default. ;-) You need
 to specify `evalScripts: true` in the options you pass into
 `Ajax.Updater` to tell it to turn it on.

 But you have another problem: Your script is calling `document.write`.
 You can't use `document.write` after the initial parsing of the page
 is done (or rather, you *can*, but it won't do what you want it to do
 -- instead, it will completely tear down the entire page and start a
 new one). Just have the PHP output the actual HTML you want to use,
 rather than outputting script that then outputs HTML. If you need to
 output something different based on a client-side piece of
 information, either pass that information to your PHP script and
 handle the branching there, or have the result return placeholder
 elements that you then update by making calls to Prototype's
 `Element#update` and such. Here's a gratuitous example:http://jsbin.com/ofate4

 [1]http://api.prototypejs.org/ajax/Ajax/Updater/

 HTH,
 --
 T.J. Crowder
 Independent Software Engineer
 tj / crowder software / com
 www / crowder software / com

 On Apr 7, 4:41 pm, cszalaj csza...@gmail.com wrote:







  We are using the Ajax.updater.  A php script determines the response
  that is returned to the updater to be passed to the div for
  updating. In the case that the success message is returned upon
  successful form submission, we need some javascript to be processed as
  well. I read in the docs that pure javascript returned gets eval'd and
  processed, but that isn't what I am experiencing. The php function
  that returns the script is:

  public function etag_thanksQuickContact($domDoc) {
      return 'script type=application/
  javascriptdocument.write(h1Thank You/h1pThank you for
  contacting us./p);/script';
    }

  This is simplified to for testing purposes. The real script that I
  want eval'd will include a few other statements, but I am using this
  to make sure that the script is running properly.

  The Ajax.updater javascript we have is:
  function qcSubmit() {
    new Ajax.Updater('qcContent', '/h/contact/QuickContact', {
      parameters: {
        name: $F('name'),
        email: $F('email'),
        telephone: $F('telephone'),
        comment: $F('comment')
      }
    });

  }

  If I write the PHP function to just return the thank you text, and not
  a javascript that prints it, then it returns fine. When I try to write
  it with Javascript, it isn't eval'ing. What do I need to do
  differently?

-- 
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.