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