1

我正在做我的第一个 phonegap 应用程序,但遇到了登录问题。我在站点控制器中有一个 appLogin 操作,我知道它会到达控制器的操作并登录 - 无论如何凭据都会得到验证并且登录成功。但是应用程序中的 ajax 调用无法得到响应。如果我注释掉登录部分并仅回显某些内容,则 ajax 调用成功并收到响应。我知道我可能缺少有关身份验证的一些基本内容。它是什么?

我在站点控制器中的登录操作:

public function actionAppLogin()
{

    $model=new LoginForm;

    // if it is ajax validation request
    if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
    {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }

    // collect user input data
    if(isset($_POST['loginform']))
    {
        $request = $_POST['loginform'];

        $model->attributes=$request;

        if($model->validate() && $model->login()){
            //it reaches here
            echo 111;

        } else {
            echo 444;
        }

    } else {
        echo 222;
    }

}

我在应用程序中的ajax登录功能:

BusinessBox.prototype.serLogin = function(){
var me = this;

alert("ajax login "+me.credentials.loginform.username);

$.ajax({
    type: "POST",
    url: serverActions.appLogin(),
    dataType: "json",
    data: me.credentials
}).done(function( obj ) {
    alert(obj);
    if(obj) {
        me.loggedIn = true;
        alert(obj);
    } else {
        me.loggedIn = false;
        alert("not logged in");
    }
}).fail(function(err){
    alert("error log in");
}); 

}

4

1 回答 1

0

是的,它到达了您在评论中标记的那个部分。这是因为您没有在帖子中发送 {ajax: "login-form"} 参数。如果您更改代码,也发布该参数,您可以在服务器端访问您的特定于 ajax 的代码段(顺便说一句,该段只是验证发送的数据,不会产生类似身份验证工作流的东西)。

于 2013-05-25T15:01:34.803 回答