in reply to "alert" or prompt box from perl cgi script

Unless I'm understanding the question wrong, it seems like you want to a call to a CGI script to return with just a pop-up alert and not affect the actual page it was called from. AFAIK, this isn't possible, since once the request has been made to the script, the browser expects a new page, that is, full HTTP headers to be printed. If you're going as far as that, you've effectively trampled the idea of avoiding "reloading the whole page with an error message."
  • Comment on Re: "alert" or prompt box from perl cgi script

Replies are listed 'Best First'.
Re: Re: "alert" or prompt box from perl cgi script
by argv (Pilgrim) on Jan 07, 2004 at 23:15 UTC
    > Unless I'm understanding the question wrong, it seems like you want to a call to a CGI script to return with just a pop-up alert and not affect the actual page it was called from.

    You got it. And yes, it does seem that it isn't possible without intervening javascript before going to the cgi code. For doing simple forms, that's not so bad. But when you don't know whether data in a form isn't right until you've gone to the server side (which may require doing db searches, etc.), you're basically forced to redraw the page... and that may also be an equally expensive operation.

      Ah, ok, now I kinda get what you want. But what about a simple something like this?

      print header; print <<EOF <script language="JavaScript"> alert('Hello World'); history.go(-1); </script> EOF ;

      This way, you will get your popup and the user will go straight back to the previous page which probably is still cached (if JavaScript is turned on ... of course). For simple forms, this should be ok.

      --
      b10m
      You got it. And yes, it does seem that it isn't possible without intervening javascript before going to the cgi code. For doing simple forms, that's not so bad. But when you don't know whether data in a form isn't right until you've gone to the server side (which may require doing db searches, etc.), you're basically forced to redraw the page... and that may also be an equally expensive operation.
      This is exactly why people use javascript to do client side data validation. It's an extremely common practice to have a bit of javascript triggered before you actually send the datato make sure it's all in the right format. Done correctly theres absolutely no server side work and no communication or time.

      But of course you can't trust the client to validate correctly. Never trust the client. You still have to validate server side.