我开始使用ajax和php我有一个问题我正在发出请求ajax,一个php驱动程序的pediant帖子和estoi以格式json返回来自控制器的结果..我需要的数据已经到达完美了实现测试。在我的情况下,如果,如果有相同,我必须解决否则警报..我的问题是,如果它不一样它顺利它告诉我警报,但是当它是真的它显示我警报并且指导我,我在$ .each ???
中做错了什么$('#klik').click(function(){
$.ajax({
url: '<?php echo base_url();?>home/validate',
type:'POST',
dataType: 'json',
success: function(data){
$.each(data, function(i,item){
if (item.Url === 'sales/index'){
window.location.href = 'http://localhost/sis_sales/sales';
}
});
alert('You do not have permissions');
}
});
});
答案 0 :(得分:0)
目前,您始终会显示提醒。你应该只在找不到任何东西时才这样做。一个简单易读的解决方案是仅在找到项时设置布尔变量,然后在each
循环后检查该布尔值:
$('#klik').click(function(){
$.ajax({
url: '<?php echo base_url();?>home/validate',
type:'POST',
dataType: 'json',
success: function(data){
var found = false;
$.each(data, function(i,item){
if (item.Url === 'sales/index'){
found = true;
window.location.href = 'http://localhost/sis_sales/sales';
}
});
if (!found) {
alert('You do not have permissions');
}
}
});
});
为了改进这段代码,我会从PHP发送一个显式代码。例如,发送一个代码来确定您是否拥有权限。这样,您可以显示更具体的错误消息。现在假设如果找不到网址,用户没有权限,但是也可能存在服务器错误,或者只是丢失的连接导致传输失败..
更好:不要返回状态文本,也要返回HTTP结果代码。如果某人没有获得许可,您可以返回403代码。您可以使用ajax请求的error
处理程序捕获这些,并检查代码以查看确实出错的地方。这使得可以找到服务器错误(500),拒绝权限(403)或任何其他错误之间的差异。
答案 1 :(得分:0)
window.location.href = 'http://localhost/sis_sales/sales';
不是阻止呼叫/操作。这意味着您的代码将继续在此行之后运行,并将进入 alert()调用。您可以修改代码并定义控制变量,如下所示;
$('#klik').click(function(){
$.ajax({
url: '<?php echo base_url();?>home/validate',
type:'POST',
dataType: 'json',
success: function(data){
var pageToRefresh = '';
$.each(data, function(i,item){
if (item.Url === 'sales/index'){
pageToRefresh = 'http://localhost/sis_sales/sales';
}
});
if(pageToRefresh == ''){
window.location.href = pageToRefresh;
}else{
alert('You do not have permissions');
}
}
});
});