Web2py重定向URL函数时出错

时间:2016-10-03 08:42:42

标签: jquery view controller url-redirection web2py

我正在为web2py开发云平台。我有一个页面,其中有多个请求可以被批准或拒绝。直到几天前,当我点击批准请求按钮时,它将通过ajax请求成功调用控制器admin.py中的 approve_request 控制器功能。我没有做任何改动,但现在当我点击按钮时它会重定向到一个页面,出现以下错误:

无效的功能(admin / undefined)

以下是jQuery中ajax调用的代码:

function approve_selected_req(){
    var ids = [];  

    jQuery('#sortTable1 tr').has(".chcktbl: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
            var id = $tds.text();
            ids.push($tds.text());
            $('#out').append(ids.join('|'));
            $.ajax({
                'type': 'POST',
                'url': "{{=URL(r=request, c='admin',f='approve_request')}}",
                'data':{
                'id' : id
                },
                'success':  function(data){  alert('Approved Request: ' + id ); 
                                        }
            });
            check_resource(id);
        });
}

同样,我有一个拒绝请求函数,如下所示:

 function reject_selected_req(){
    var ids = [];  
    jQuery('#sortTable1 tr').has(".chcktbl: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
            var id = $tds.text();
            ids.push($tds.text());
            $('#out').append(ids.join('|'));
            $.ajax({
                'type': 'POST',
                'url': "{{=URL(r=request, c='admin',f='reject_request')}}",
                'data':{
                'id' : id
                },
                'success':  function(data){  alert('Request Rejected: ' + id); 
                                        }
            });
            check_resource(id);
        });
}

拒绝请求调用工作正常但批准请求调用没有。以下是控制器操作函数 approve_request reject_request 的代码:

@check_moderator
@handle_exception
def approve_request():
    request_id=request.vars.id;
    logger.info("\nApproving request id: " + request_id + "\n");
    enqueue_vm_request(request_id);
    session.flash = 'Installation request added to queue'
    logger.debug("anmol")
    redirect(URL(c='admin', f='list_all_pending_requests'))

@check_moderator
@handle_exception
def reject_request():
    request_id=request.vars.id;
    logger.info("\nRejecting request: " + request_id + "\n");
    reject_vm_request(request_id);
    session.flash = 'Request Rejected'
    redirect(URL(c='admin', f='list_all_pending_requests'))

更新: 对于延迟沟通,我感到非常抱歉。 我调试了问题,问题出在check_resource(id)函数中。这是check_resource()代码:

function check_resource(request_id){

var verify_url = "{{=URL('verify_vm_resource')}}";
jQuery.post(verify_url, {request_id:request_id},
    function(result){
        if(result != 'Success'){
            $('.flash').html(result).slideDown();
        }else
        {
            var link = $("#accept_"+request_id);
            window.location.href = link.attr("href");            
            console.log("Link: " + window.location.href);
        }
    }
);
return false;

}

在这种情况下,console.log打印出:“链接:https://127.0.0.1/baadal/admin/list_all_pending_requests” 并且控制台中显示的http请求是:GET https://127.0.0.1/baadal/admin/undefined

理想情况下,它应该重定向到同一页面,但它没有这样做。

0 个答案:

没有答案