我需要一些帮助才能将数据从视图传输到控制器动作功能。我的情况如下: 我有一张带复选框的桌子。每个表条目对应一个带有请求ID的请求。用户将选择一些复选框,然后单击“批准”按钮。在单击按钮时,jQuery脚本必须找到所有选定的请求ID并将它们发送到控制器函数。
这是jQuery代码:
function get_selected_req(){
var ids = [];
jQuery('#sortTable1 tr').has(":checkbox:checked").each(function() {
var $row = $(this).closest("tr");// Finds the closest row<tr>
$tds = $row.find("td:nth-child(2)"); // Finds the 2nd <td> element
ids.push($tds.text());
$('#out').text(ids.join('|'));
});
}
我必须将数组'ids'发送到控制器函数,然后可以使用id处理请求。但我不知道该怎么做。任何帮助将受到高度赞赏。
更新: 我在视图中编写了ajax代码。我一次只发送一个id。代码如下:
$.ajax({
type: 'POST',
url: "{{=URL(r=request, c='admin',f='approve_request')}}",
data: $tds.text(),
success: function(data){ alert('yay');
tab_refresh();
check_resource(data);
}
});
我对如何解析控制器中的数据感到有点困惑。这是代码:
def approve_request():
request_id=request.args[0]
enqueue_vm_request(request_id);
session.flash = 'Installation request added to queue'
redirect(URL(c='admin', f='list_all_pending_requests'))
请指导我。
答案 0 :(得分:0)
使用push push
对数组赋值,使用分隔符连接数组,在服务器端分割结果数据
ids.push($tds.text());
$('#out').text(ids.join('|'));
注意:#out
应隐藏输入
答案 1 :(得分:0)
You can pass any value to function by simply calling a function in javascript.
Client side:
$.ajax({
type: "POST",
url: "HomePage/HandleOperations",
data: {operations: operationCollection},
success: function (data) { alert("SUCCESS"); }
});
and declare a class server side like this:
public class Operation
{
public int Index[];
}
then you can have this action:
public void HandleOperations(Operation[] operations)
{
}
else you can try this option
var selectedCatId = $(this).val();
var details = baseUrl+"/controllername/controllerfunctionname/"+selectedCatId;
and in controller
public function controllerfunctionname(array of ids[] ){
}
答案 2 :(得分:0)
当您将数据发布到web2py时,可以在request.post_vars
中找到结果变量(也在request.vars
中,request.post_vars
和request.get_vars
的组合)。要以正确的格式发送数据,您应该发送Javascript对象而不是单个值或数组(对象的键将成为request.post_vars
的键)。
如果您想一次发送一个id
:
$.ajax({
...,
data: {id: $tds.text()},
...
});
然后在你的web2py控制器中:
def approve_request():
request_id = request.post_vars.id
发送一组id:
$.ajax({
...,
data: {ids: ids},
...
});
注意,当您通过jQuery发送数组时,jQuery将密钥从“ids”转换为“ids []”,以便在web2py中检索数组:
def approve_request():
request_ids = request.post_vars['ids[]']