>
>
>     function serialRead() {
>         var msg = "<p>{{=serialRead()}}</p>";
>         $('#console').append(msg);
>     }
>

You are attempting to mix Python (which runs on the server) with Javascript 
(which runs on the client). The above is a template that web2py converts 
into HTML and sends to the browser. When the template is executed, 
{{=serialRead()}} is replaced with the value returned by calling the 
serialRead() function -- so the Javascript sent to the browser simply 
contains a fixed value in that place (i.e., the server-side serialRead 
function is called only once, when the page is initially rendered by 
web2py). If you want to repeatedly call a Python function on the server 
from the client (without completely reloading the page), you'll need to 
make Ajax calls to the server. For details on that, see 
http://web2py.com/books/default/chapter/29/11.

If you move your serialRead() function to the default.py controller, you 
could do something like this:

function serialRead() {
  ajax("{{=URL('default', 'serialRead')}}", [], "console");
};

The ajax call makes a request to the /defaul/serialRead URL and places the 
returned result into the element with id="console".

Anthony

Reply via email to