2017-01-22 5 views
-2

私はajaxとphpで作業を始めています。私はリクエストをしています。ajax、PHPドライバのpediant postと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

現在のところ、常にアラートが表示されます。何も見つからないときにのみ行うべきです。シンプルで読みやすいソリューションは、アイテムが発見された場合にのみ、ブール変数を設定し、その後、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。たとえば、あなたが許可を持っているかどうかを判断するコードを送信します。これにより、より具体的なエラーメッセージを表示することができます。ここでは、URLが見つからない場合にユーザーに権限がないと仮定していますが、サーバーエラーが発生しているか、接続が失われて転送が失敗している可能性があります。

さらに良い:ステータステキストだけでなく、HTTP結果コードも表示します。誰かが許可を得ていないときは、403コードを返すことができます。あなたはajaxリクエストのerrorハンドラでこれらを捕まえて、コードが正確に何が間違っていたかを確認することができます。これにより、サーバーエラー(500)、許可が拒否された(403)、またはその他のエラーの間で違うものを見つけることができます。

+0

おかげで、私は小さな誤差たぶん – FeRcHo

+0

...私はこれを試してみました、それが動作しませんでした、そして今それが動作誓います。 'found = true'ではなく' var found = true'と書くと、このコードはすでに失敗していると思います。 – GolezTrol

+0

私のコードを改善する方法を理解し、ユーザーのアクセス許可を処理するために、ページまたは参照リンクを私に与えることができます – FeRcHo

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

 
       
 
      } 
 
     });  
 
     });

関連する問題