Hi Yuval,

I was trying to do the same as you passing vars to controller via DIV. The 
fact is (as far as I tested), ajax(url, ['name'], 'target') doesn't work 
with "_name" of DIV (or <textarea> (or maybe some other tags, to be 
tested). The ajax call functions but "request.vars" is empty. You can use 
<input> or <select> instead. Assign your value to "_value" of the tag and 
give the tag name in ajax. You may set the block hidden by css if the only 
function of the block is to pass the var. A piece of example code in "VIEW":

<input id="pass_value" name="some_value"></input>
<div id="ajax_call">bu la bu la</div>
<div id="target"></div>


<script type="text/javascript">
$(document).on("click", "#ajax_call", function(){
 jQuery(pass_value).val('value_to_controller');
 ajax("{{=URL('ajax_call_function')}}", ['some_value'], 'target');
});
</script>

Hope this helps.

Lio



在 2013年5月20日星期一UTC+8上午11时43分54秒,Yuval写道:
>
> I'm trying to pass back a DIV element using Ajax function, the flow works, 
> but the argument is not returned into the request.vars.
>
> Using Ajax() on another view works well for me.
>
> *The scenario:*
>
>    - SQLFROM.grid element is displayed in the view. 
>    - When a row is clicked, I'm:
>       - capturing the event, 
>       - getting the row's first cell value, 
>       - setting the value into a hidden div (selected_job) (work around 
>       not being able to pass value back by Ajax())
>    - Using Ajax() calling back and passing the selected_job element. 
>
> *View:*
> {{extend 'layout.html'}}
> <script type="text/javascript">
> $(document).ready(function(){ 
>     $("tr").click(function(){
>     var sid =  $(this).find('td').eq(0).text();
>     $(selected_job).text(sid);
>     ajax('update_job_items', ['selected_job'], 'job_items_grid');     
>    }); 
> });
> </script>
>
> <div id='selected_job' class='hidden'>-1</div>
> {{=jobs}} <!-- Displays an SQLFORM.grid -->
> <div id='job_items_grid' ></div>
>
> *Controller:*
> def update_job_items():
>     print request.vars                   # ==> <Storage {}> empty.... 
>     item_id = request.vars.selected_job  # item_id  ==> NoneType: None
>     return DIV('Done')
>
> The above flow works, values are captured correctly,  *update_job_items**
> ()* is called but *request.vars* is empty from any element
>
> An advice will be greatly appreciated.
>
> Yuval
>

-- 

--- 
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/groups/opt_out.


Reply via email to