No, you're still attempting to run Python code in Javascript. You must 
write actual Javascript code -- no Python. You should only be using Python 
to create the base URL -- for example:

    var baseUrl = '{{=URL('static', 'images')}}';
    [everything else is Javascript]

Anthony

On Tuesday, June 14, 2016 at 7:38:15 AM UTC-4, Emmanuel Dsouza wrote:
>
> Thank you Anthony but still it is not going through!
> Could you check why:
>
> {{extend 'layout.html'}}
> <script>
>     window.setInterval(function(){
>         {{i=URL('static','images/%d.jpg' %(randint(0,2)))}}
>   document.body.style.background = url("{{=i}}");
> }, 5000);
> </script>
>
>
> Even this one doesn't work:
>
> {{extend 'layout.html'}}
> <script>
>     window.setInterval(function(){
>         {{f=["lightblue","pink","green"]}}
>         {{z=f[randint(0,2)]}}
>         document.body.style.background = {{=z}};
> }, 5000);
> </script>
>
>
> On Tuesday, June 14, 2016 at 12:29:52 PM UTC+5:30, Anthony wrote:
>>
>> 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.

Reply via email to