在yii2

时间:2016-02-04 10:52:30

标签: javascript jquery ajax yii2

在我的视图中,登录用户可以给出评分。一切正常。所有我需要在用户未登录时打开弹出窗口。这是我的代码。

 public function behaviors()
{
    return [
        [
            'class' => SluggableBehavior::className(),
            'attribute' => 'title',
            // 'slugAttribute' => 'slug',
        ],
        'access' => [
        'class' => \yii\filters\AccessControl::className(),
            'only' => ['report-product','index'],
            'rules' => [
                [
                'actions' => ['report-product',],
                   'allow' => true,
                   'roles' => ['@'],
                ],
                [
                'actions' => ['index',],
                   'allow' => true,
                   'roles' => ['?'],
                ],
            ],
        ],
    ];
}

js方法:

 function reportAboutProduct(rUrl,product){
  jQuery.ajax({
    url: rUrl,
    type: 'POST',
    data: {id_product : product},
    success: function (response) {
            alert(response);
          if(response == 1){
            $('#myModal1').modal('hide');
            toastr.success('Reported successfully', 'Success',{closeButton:true});
          }
          else{
            $('#myModal1').html(response).modal('show');
          }  
       },
    error: function (jqXHR, exception){
        var errorMsg = getErrorMsg(jqXHR);
        if(errorMsg == 'login-required'){
            login();
            window.onbeforeunload = function(){
             return false;
         };

        }else{
            toastr.error(errorMsg, 'Failed',{closeButton:true});
        }

    }
  });
 } 

 function getErrorMsg(jqXHR, exception){
    var msg = '';
        if (jqXHR.status === 0) {
            msg = 'Not connect.\n Verify Network.';
        } else if (jqXHR.status == 404) {
            msg = 'Requested page not found. [404]';
        } else if (jqXHR.status == 500) {
            msg = 'Internal Server Error [500].';
        } else if (exception === 'parsererror') {
            msg = 'Requested JSON parse failed.';
        } else if (exception === 'timeout') {
            msg = 'Time out error.';
        } else if (exception === 'abort') {
            msg = 'Ajax request aborted.';
        } else if (jqXHR.status === 302) {
            msg = 'login-required'; 
        } else {
            msg = 'Uncaught Error.\n' + jqXHR.responseText;
        }

        return msg;
 }

只有login()函数无效,因为behavior方法会将我重定向到登录页面。怎么阻止这个?请帮助我可能是一些js或更改behavior的默认重定向。

如果我输入此代码,它将打开弹出窗口,但有一条我不想要的提示信息。

window.onbeforeunload = function(){
             return false;
         };

任何帮助都会很棒。

0 个答案:

没有答案