在我的视图中,登录用户可以给出评分。一切正常。所有我需要在用户未登录时打开弹出窗口。这是我的代码。
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;
};
任何帮助都会很棒。