2016-06-28 11 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を返すように機能させると、ページが更新されません。

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

そして、あなたのJS関数は次のようなものになり、このようなあなたのHTMLを更新します。何がやりたいことはAJAXをされ使用して、ページDashboard/stateに行く場合には

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

'asynchronous'メソッドはこのコードで影響を受けません。 –

0

を間違ったアプローチ。そのページにリダイレクトする必要があります。

$.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; 

}

関連する問題