如何使用Ajax并同时返回视图

时间:2016-01-03 12:35:55

标签: php jquery ajax kohana

我的控制器中有一个登录方法,我检查数据库中是否有这样的用户。我按下提交按钮时调用此方法。我同时从视图中显示登录。

在我的情况下,如果有这样的用户,它不会显示消息。我想因为在我的控制器中我加载视图。

如果有这样的用户使用Ajax并且如果我像我一样返回视图,我怎么能显示这条消息? 我正在使用Kohana。谢谢!

我的代码是:

$(document).ready(function(){

  $('#submit').on('click', function() {

    if(username.length === 0 || password.length === 0) {
      //...check if validation fails
    }
    else {
      $.ajax({
        url: "/admin/signin" ,
        type: "POST",
        data: {
          "username":username,
          "password":password
        },
        success: function(data) {
          if(data !== 'error') {

            window.location = "/admin/index";
          }
          else
          {
            alert('no such user');
          }
        }
      });
    }

  });

});
public function action_signin()
{

if ($_POST) {
$is_admin = Model_Admin::signin($_POST);           

print 'success';
} else {
print 'error';
}
}

$this->template->content = View::factory('admin/login_form');


}

2 个答案:

答案 0 :(得分:0)

如果您不想加载“默认”模板,请尝试使用$this->auto_render = FALSE; kohana控制器也有方法is_ajax $this->request->is_ajax()

答案 1 :(得分:0)

您的控制器代码将是这样的。

public function action_signin()
{
    if($this->request->is_ajax()){
        $this->auto_render = FALSE;
    }

    if ($_POST) {
        $is_admin = Model_Admin::signin($_POST);           
        if($is_admin){
            print 'success';
        } else {
           print 'error';
        }
    }else{
    $this->template->content = View::factory('admin/login_form');
    }
}