Actually, in this case, you don't really need to bother with Ajax. Instead,
just implement the random integer generation in Javascript and use the
random integer to generate the URL in Javascript.
For future reference, though, the third argument to the ajax() function can
be ":eval" (which tells it to evaluate the returned value as JS code) or a
JS function (which will be passed the returned value). See the
documentation.
Anthony
On Tuesday, June 14, 2016 at 1:58:32 AM UTC-4, Emmanuel Dsouza wrote:
>
> I was obviously waiting for your reply only.
> Ok Anthony I got what you said. But how do I get a variable through an
> ajax call? Ajax only updates a tag id, right?
> How do I edit this to make it work?
>
> in controller:
>
> def index():
> return locals()
>
> in model:
>
> def retimage():
> from random import randint
> i=randint(0,2)
> return URL('static','images/%d.jpg' %(i))
>
> in view:
>
> {{extend 'layout.html'}}
> <script>
> window.setInterval(function(){
> {{getimage=retimage()}}
> document.body.style.background-image = url("{{=getimage}}");
> }, 500);
> </script>
>
>
> I am confused on how to get a variable value though ajax calls. Please
> help me on this.
>
> On Monday, June 13, 2016 at 8:46:28 PM UTC+5:30, Anthony wrote:
>>
>> You cannot call Python functions on the server from Javascript code
>> running in the browser. The following line:
>>
>> {{getimage=retimage()}}
>>
>> will be called exactly once on the server *before *the HTML page is ever
>> sent to the browser, and it will not result in anything being written into
>> the Javascript code (if you look at the page source in the browser, you
>> will see nothing there).
>>
>> If you need to retrieve images from the server without reloading the
>> page, you must use Ajax.
>>
>> Anthony
>>
>>
>> On Monday, June 13, 2016 at 5:30:47 AM UTC-4, Emmanuel Dsouza wrote:
>>>
>>> CONTROLLER:
>>>
>>> def retimage():
>>>
>>> k=["URL('static','images/1.jpg')","URL('static','images/2.jpg')","URL('static','images/3.jpg')"]
>>> from random import randint
>>> i=randint(0,2)
>>> return k[i]
>>> def index():
>>> return locals()
>>>
>>> VIEW:
>>>
>>> {{extend 'layout.html'}}
>>> <script>
>>> window.setInterval(function(){
>>> {{getimage=retimage()}}
>>> document.body.background = url("{{=getimage}}");
>>> }, 5000);
>>> </script>
>>>
>>>
>>>
>>> How should I correct this?
>>>
>>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.