簡體   English   中英

PHP Codeigniter和jQuery Ajax

[英]php Codeigniter and jquery ajax

登錄后,我想用ajax調用codeigniter控制器。 但是,當我執行它時,登錄頁面只會刷新,而ajax url不會調用codeigniter的控制器功能。

我不明白發生了什么。 請幫忙?

下面是我的代碼

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.")
                    }
                });
            }
        });
}

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

它被刷新是因為它是一個提交按鈕,並且必須在表單內部。 因此,它在點擊事件時提交表單。

您需要做的是使您的函數在單擊按鈕時返回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;
}

如果要執行的操作是轉到“ 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'); ?>");

這可能會更好,因為它不會將原始頁面保留在會話歷史記錄中。

函數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;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM