Codeigniter 控制器中的 BootstrapDialog 警报
BootstrapDialog Alert in Codeigniter Controller
我想在我的控制器中使用 bootstrapDialog 警报 (https://nakupanda.github.io/bootstrap3-dialog/) 而不是浏览器的默认警报框,但它不起作用。
我在视图底部包含了从 github dist 文件夹中获得的这些脚本
<link rel="stylesheet" href="assets/css/bootstrap-dialog.min.css" />
<script src="assets/js/bootstrap-dialog.min.js"></script>
控制器
function student(){
if ($student_status == 'paid'){
echo '<script type="text/javascript">';
echo 'BootstrapDialog.alert('Your Registration was successful')';
echo '</script>';
}
else {
// redirect url
}
}
我也尝试在控制器中回显 css 和 js 文件,但失败了。如果我回显默认的警告框,它可以工作,请问我做错了什么?
首先 - 你有一些错误:
您需要转义您的警报单引号,例如:
echo 'BootstrapDialog.alert(\'Your Registration was successful\')';
或者您可以混合使用单引号和双引号,例如:
echo 'BootstrapDialog.alert("Your Registration was successful")';
您可能还需要加载您的脚本并 css 使用前导斜杠,例如:
<link rel="stylesheet" href="/assets/css/bootstrap-dialog.min.css" />
<script src="/assets/js/bootstrap-dialog.min.js"></script>
您正在将样式表加载为脚本,<script src="assets/css/bootstrap-dialog.min.css"></script>;
不正确,请使用 <link rel="stylesheet" href="your.css">
second - 混合使用 javascript 和 php 不是一个好主意,你不能调用 jquery php 中的函数,您只能生成 html,然后在运行时执行。这会起作用:
if ($student_status == 'paid'){
$str=' <script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.35.1/js/bootstrap-dialog.min.js"></script>
<script type="text/javascript">
setTimeout(function() {
BootstrapDialog.alert(\'Your Registration was successful\')
},10);
</script>';
echo $str;
}
请注意 setTimout()
功能,它需要一点时间来确保您的所有文件都已加载。
third - 正确的方法是用ajax代替:见docs:
jquery ajax 调用你的 php 函数学生。
function student returns 判断对错。
- 在 ajax 成功回调中添加 bootstrapDialog.alert
echo "BootstrapDialog.alert('Your Registration was successful')"
您必须转义引号或使用双引号。
Bootstrap对话框建立在Bootstrap之上,所以你必须包含bootstrapcss和bootstrapjs,然后是bootstrap对话框 css 和 js
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<!-- Latest compiled and minified JavaScript -->
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
http://jsfiddle.net/mreis1/YJdB7/1/
例如
查看:
<!DOCTYPE html>
<html>
<head>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.35.1/css/bootstrap-dialog.min.css" rel="stylesheet" type="text/css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.35.1/js/bootstrap-dialog.min.js"></script>
<title>Bootstrap Dialog Test</title>
</head>
<body>
<!-- IF SUCCESSFUL -->
<?php $alert= ''; ?>
<?php if ($alert == 'success'): ?>
<script type = "text/javascript">
BootstrapDialog.alert('Your Registration was Successful');
</script>
<?php endif; ?>
<!-- IF FAILED -->
<?php if($alert == 'failed'): ?>
<script type = "text/javascript">
BootstrapDialog.alert({
title: 'An Error Occured',
message: 'Your Registration failed',
type: BootstrapDialog.TYPE_DANGER,
buttonLabel: 'Close'
});
</script>
<?php endif; ?>
</body>
</html>
控制器:
function student(){
if ($student_status == 'paid'){
$data['alert'] = 'success';
}
else {
$data['alert'] = 'failed';
}
$this->load->view(view_page, $data);
}
输出:
试试这个代码
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/bootstrap-dialog.min.css" />
<script src="<?php echo base_url();?>assets/js/bootstrap-dialog.min.js"></script>
我想在我的控制器中使用 bootstrapDialog 警报 (https://nakupanda.github.io/bootstrap3-dialog/) 而不是浏览器的默认警报框,但它不起作用。
我在视图底部包含了从 github dist 文件夹中获得的这些脚本
<link rel="stylesheet" href="assets/css/bootstrap-dialog.min.css" />
<script src="assets/js/bootstrap-dialog.min.js"></script>
控制器
function student(){
if ($student_status == 'paid'){
echo '<script type="text/javascript">';
echo 'BootstrapDialog.alert('Your Registration was successful')';
echo '</script>';
}
else {
// redirect url
}
}
我也尝试在控制器中回显 css 和 js 文件,但失败了。如果我回显默认的警告框,它可以工作,请问我做错了什么?
首先 - 你有一些错误:
您需要转义您的警报单引号,例如:
echo 'BootstrapDialog.alert(\'Your Registration was successful\')';
或者您可以混合使用单引号和双引号,例如:
echo 'BootstrapDialog.alert("Your Registration was successful")';
您可能还需要加载您的脚本并 css 使用前导斜杠,例如:
<link rel="stylesheet" href="/assets/css/bootstrap-dialog.min.css" /> <script src="/assets/js/bootstrap-dialog.min.js"></script>
您正在将样式表加载为脚本,
<script src="assets/css/bootstrap-dialog.min.css"></script>;
不正确,请使用<link rel="stylesheet" href="your.css">
second - 混合使用 javascript 和 php 不是一个好主意,你不能调用 jquery php 中的函数,您只能生成 html,然后在运行时执行。这会起作用:
if ($student_status == 'paid'){
$str=' <script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.35.1/js/bootstrap-dialog.min.js"></script>
<script type="text/javascript">
setTimeout(function() {
BootstrapDialog.alert(\'Your Registration was successful\')
},10);
</script>';
echo $str;
}
请注意 setTimout()
功能,它需要一点时间来确保您的所有文件都已加载。
third - 正确的方法是用ajax代替:见docs:
jquery ajax 调用你的 php 函数学生。
function student returns 判断对错。
- 在 ajax 成功回调中添加 bootstrapDialog.alert
echo "BootstrapDialog.alert('Your Registration was successful')"
您必须转义引号或使用双引号。
Bootstrap对话框建立在Bootstrap之上,所以你必须包含bootstrapcss和bootstrapjs,然后是bootstrap对话框 css 和 js
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<!-- Latest compiled and minified JavaScript -->
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
http://jsfiddle.net/mreis1/YJdB7/1/
例如
查看:
<!DOCTYPE html>
<html>
<head>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.35.1/css/bootstrap-dialog.min.css" rel="stylesheet" type="text/css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.35.1/js/bootstrap-dialog.min.js"></script>
<title>Bootstrap Dialog Test</title>
</head>
<body>
<!-- IF SUCCESSFUL -->
<?php $alert= ''; ?>
<?php if ($alert == 'success'): ?>
<script type = "text/javascript">
BootstrapDialog.alert('Your Registration was Successful');
</script>
<?php endif; ?>
<!-- IF FAILED -->
<?php if($alert == 'failed'): ?>
<script type = "text/javascript">
BootstrapDialog.alert({
title: 'An Error Occured',
message: 'Your Registration failed',
type: BootstrapDialog.TYPE_DANGER,
buttonLabel: 'Close'
});
</script>
<?php endif; ?>
</body>
</html>
控制器:
function student(){
if ($student_status == 'paid'){
$data['alert'] = 'success';
}
else {
$data['alert'] = 'failed';
}
$this->load->view(view_page, $data);
}
输出:
试试这个代码
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/bootstrap-dialog.min.css" />
<script src="<?php echo base_url();?>assets/js/bootstrap-dialog.min.js"></script>