来自php控制器的ajax请求中的$ .each

时间:2017-01-22 21:26:48

标签: javascript jquery ajax

我开始使用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');

        } 
    });       
  });

2 个答案:

答案 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');
               }

              
            } 
        });       
      });