如何在 Web2py 中使用 jquery 将数据从视图传输到控制器操作函数
Posted
技术标签:
【中文标题】如何在 Web2py 中使用 jquery 将数据从视图传输到控制器操作函数【英文标题】:How to transfer data from view to controller action function using jquery in Web2py 【发布时间】:2016-09-23 06:58:34 【问题描述】:在将数据从视图传输到控制器操作函数时,我需要一些帮助。我的情况如下: 我有一张带复选框的桌子。每个表条目对应一个带有请求 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”发送到控制器函数,然后该函数可以使用 ids 处理请求。但我不知道该怎么做。任何帮助将不胜感激。
更新: 我已经在视图中编写了 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'))
请指导我。
【问题讨论】:
【参考方案1】:使用push到push
一个值到一个数组,用分隔符加入数组,在服务器端拆分结果数据
ids.push($tds.text());
$('#out').text(ids.join('|'));
注意:#out
应该是隐藏输入
【讨论】:
嗨。谢谢回复。我已经对代码进行了更改。但我不知道将数据从视图传输到控制器的代码,即我需要使用 URL 调用操作函数。 @AnmolAnand 使用简单的表单提交 或ajax请求 好的。非常感谢【参考方案2】: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[] )
【讨论】:
嗨。谢谢。我看到我需要使用 ajax 但这不是 ASP.net 代码。我正在使用 python 开发 web2py。但我会做必要的转换。谢谢! 很高兴让我知道需要任何进一步的帮助。【参考方案3】:当您将数据发布到 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[]']
【讨论】:
以上是关于如何在 Web2py 中使用 jquery 将数据从视图传输到控制器操作函数的主要内容,如果未能解决你的问题,请参考以下文章