我正在为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
理想情况下,它应该重定向到同一页面,但它没有这样做。