2016-09-23 115 views
0

传送到控制器动作的功能,我需要从一个视图控制器操作功能传输数据提供一些帮助。我的情况如下: 我有一个带复选框的表格。每个表条目都对应一个带请求ID的请求。用户将选择一些复选框,然后单击“批准”按钮。单击按钮时,jQuery脚本必须找到所有选定的请求ID并将它们发送到控制器功能。如何将数据从视图中使用jQuery在web2py中

这里是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

使用推到push一个值到一个阵列中,加入用定界符阵列,在服务器侧分割所得到的数据

ids.push($tds.text()); 
$('#out').text(ids.join('|')); 

注:#out应该被隐藏输入

+0

嗨。谢谢回复。我已经对代码进行了修改。但我不知道将数据从视图传输到控制器的代码,即我需要使用URL调用操作函数。 –

+0

@AnmolAnand使用简单的表单提交 – madalinivascu

+0

或ajax请求 – madalinivascu

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[]){ 

} 
+0

嗨。谢谢。我看到我需要使用ajax,但不是这个ASP.net代码。我正在与python的web2py工作。但我会做必要的转换。谢谢! –

+0

非常高兴的事情让我知道需要任何进一步的帮助。 –

0

当您将数据发布到web2py,结果变量可以在request.post_vars(也可以在request.vars,这是request.post_varsrequest.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 []”,所以要重新trieve在web2py的数组:

def approve_request(): 
    request_ids = request.post_vars['ids[]'] 
相关问题