2017-01-22 17 views
-2

我開始與AJAX和PHP的工作我有一個問題我正在請求AJAX,PHP驅動程序和ESTOMI的從後控制器的結果返回格式json的pediant後。我需要的數據到完善已經實現了測試。在我的情況下,如果存在相同的情況,我必須另外處理一個警報..我的問題是,如果它不一樣,它會很好地向我顯示警報,但是如果它是真的,它會向我顯示警報並指示我,我在$ .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。例如發送一個代碼來確定你是否有權限。這樣,您可以顯示更具體的錯誤消息。現在,假設用戶沒有權限,如果沒有找到該網址,但也可能是一個服務器錯誤,或者只是一個連接丟失導致傳輸失敗..

更妙的是:不要返回狀態文本,也是一個HTTP結果代碼。當某人沒有權限時,您可以返回403代碼。你可以用error處理Ajax請求的捕捉這些,並檢查代碼,看看究竟是什麼出了問題。這使得可以找到服務器錯誤(500),拒絕的權限(403)或任何其他錯誤之間的差異。

+0

謝謝你,我發誓,我嘗試這樣做,也沒有工作,而現在它的工作原理... – FeRcHo

+0

也許一個小錯誤。我認爲如果你寫'var found = true'而不是'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'); 
 
       } 
 

 
       
 
      } 
 
     });  
 
     });