2016-06-28 83 views
0

我想在登錄後用ajax調用codeigniter控制器。但是當我執行它時,登錄頁面只刷新並且ajax url不調用codeigniter的控制器函數。php Codeigniter和jquery ajax

我不明白髮生了什麼事。請幫忙?

下面是我的代碼

function ValidateReg() { 

     var username = document.getElementById("inputName").value; 
     var password = document.getElementById("inputPassword").value; 
    $.post("<?php echo site_url('Panel/login') ?>", {checkUser: username, checkPassword: password, action: "validateUser"}, 
     function (data) { 
      var result = data + ""; 
      if (result.lastIndexOf("Success" > -1)) { 
       $.ajax({ 
        url: "<?php echo site_url('Dashboard/state'); ?>", 
        type: 'POST', 
        complete: function (done) { 
         console.log("Finished.") 
        } 
       }); 
      } 
     }); 
} 

這裏面板和儀表盤是我的兩個不同的控制器

+0

這要看你如何處理'login'單擊事件。請向我們展示整個點擊事件代碼。 –

+0

登錄按鈕我正在調用腳本功能。 –

+0

請向我們展示該代碼,處理點擊事件。這可能有助於我們解決。 –

回答

1

它被刷新,因爲它是一個提交按鈕,它必須是內部形狀。所以它提交點擊事件的形式。

你需要做的是讓你的函數返回false點擊按鈕,這樣就不會刷新頁面。

更新您的HTML這樣的,

<button type="submit" class="btn button text-uppercase" onclick="return ValidateReg();">Login </button> 

而且你的JS函數看起來是這樣的:

function ValidateReg() { 

     var username = document.getElementById("inputName").value; 
     var password = document.getElementById("inputPassword").value; 
     $.post("<?php echo site_url('Panel/login') ?>", {checkUser: username, checkPassword: password, action: "validateUser"}, 
     function (data) { 
      var result = data + ""; 
      if (result.lastIndexOf("Success" > -1)) { 
       $.ajax({ 
        url: "<?php echo site_url('Dashboard/state'); ?>", 
        type: 'POST', 
        complete: function (done) { 
         console.log("Finished.") 
        } 
       }); 
      } 
     }); 
     return false; 
} 
+0

您將如何使用異步方法作爲ValidateReg()的一部分' –

+0

'異步'方法不受此代碼影響。 –

0

如果你想要做的是去的網頁Dashboard/state然後使用AJAX是錯誤的方法。您需要重定向到該頁面。

$.post("<?php echo site_url('Panel/login') ?>", {checkUser: username, checkPassword: password, action: "validateUser"}, 
    function (data) { 
    var result = data + ""; 
    if (result.lastIndexOf("Success" > -1)) 
    { 
     console.log("Finished."); 
     window.location = "<?php echo site_url('Dashboard/state'); ?>"; 
    } 
    } 
); 

其他方式使用JavaScript重定向會這樣

window.location.replace("<?php echo site_url('Dashboard/state'); ?>"); 

這可能是更好,因爲它不保留原始頁面會話歷史記錄來完成。

+0

它有效。謝謝。 –

0

功能ValidateReg(){

var username = document.getElementById("inputName").value; 
    var password = document.getElementById("inputPassword").value; 
    $.post("<?php echo site_url('Panel/login') ?>", {checkUser: username, checkPassword: password, action: "validateUser"}, 
    function (data) { 
     var result = data + ""; 
     if (result.lastIndexOf("Success" > -1)) { 
      $.ajax({ 
       url: "<?php echo site_url('Dashboard/state'); ?>", 
       type: 'POST', 
       success: function (done) { 
        console.log("Finished.") 
       } 
      }); 
     } 
    }); 
    return false; 

}