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.