--- In zope@egroups.com, Thomas Weholt <Thomas@c...> wrote:
<script language="javascript1.2>
function ShowStuff(params){
var text = "<dtml-in expr="sqlMethod(some_id=params>" <!-- this does not work, of course. How I can I pass argument thru Javascript to the sqlMethod ?? ---> alert (text); }
</script>
I think I know what you are talking about. But you have to really keep your mind straight about one thing: DTML runs with the CPU on the server side, JavaScript runs with the CPU on the client side. In other words, by the time you are running Javascript, you CAN'T access your database records. I have done a lot of things in displaying dynamic pull-down menus. E.g: you choose a state from one pull down menu, and the content of another pulldown menu is automatically changed to the list of cities within that particular state. When you click on a state, you CAN'T query your database for the list of its cities. It's too late, your code is already running on the client side. So what should you do? What you should do is to pre-generate JavaScript arrays, storing the names of all the cities for all the states. That being said, there is one more caveat. When you pre-render your database records into JavaScript arrays, you have to be careful about quoting. I don't know whether there are any string format quoting in DTML suitable for rendering into JavaScript (the <dtml-sqltest ... type=string> comes to mind, but I am not sure it works outside ZSQL methods), I ended up implementing my own external method to quote Python strings into JavaScript strings. If you still don't understand what I mean, consider a python string 'He said, "no".' stored in your DTML variable mystring, that is, something like: <dtml-call "REQUEST.set('mystring', 'He said, "no".')"> and you pre-render it into JavaScript code x = "<dtml-var mystring>"; It won't work. Because if you look at the source of your JavaScript, you will see: x = "He said, "no"."; regards, Hung Jung ________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
If you don't mind the complication, you can use the xml-rpc Java Applet (I can't remember where it comes from) and the Javascript hooks that it provides to make xml-rpc calls from javscript to Zope.
>>>>>>>>>>>> Original Message <<<<<<<<<<<<<<<<<<
On 6/29/00, 10:14:06 AM, Hung Jung Lu <hungjunglu@hotmail.com> wrote regarding Re: [Zope-dev] Using Java-Script with DTML:
--- In zope@egroups.com, Thomas Weholt <Thomas@c...> wrote:
<script language="javascript1.2>
function ShowStuff(params){
var text = "<dtml-in expr="sqlMethod(some_id=params>" <!-- this does not work, of course. How I can I pass argument thru Javascript to the sqlMethod ?? ---> alert (text); }
</script>
I think I know what you are talking about. But you have to really keep your mind straight about one thing: DTML runs with the CPU on the server side, JavaScript runs with the CPU on the client side. In other words, by the time you are running Javascript, you CAN'T access your database records.
I have done a lot of things in displaying dynamic pull-down menus. E.g: you choose a state from one pull down menu, and the content of another pulldown menu is automatically changed to the list of cities within that particular state. When you click on a state, you CAN'T query your database for the list of its cities. It's too late, your code is already running on the client side. So what should you do? What you should do is to pre-generate JavaScript arrays, storing the names of all the cities for all the states.
That being said, there is one more caveat. When you pre-render your database records into JavaScript arrays, you have to be careful about quoting. I don't know whether there are any string format quoting in DTML suitable for rendering into JavaScript (the <dtml-sqltest ... type=string> comes to mind, but I am not sure it works outside ZSQL methods), I ended up implementing my own external method to quote Python strings into JavaScript strings.
If you still don't understand what I mean, consider a python string
'He said, "no".'
stored in your DTML variable mystring, that is, something like:
<dtml-call "REQUEST.set('mystring', 'He said, "no".')">
and you pre-render it into JavaScript code
x = "<dtml-var mystring>";
It won't work. Because if you look at the source of your JavaScript, you will see:
x = "He said, "no".";
regards,
Hung Jung
________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
participants (2)
-
Hung Jung Lu -
Monty Taylor