【发布时间】:2016-04-20 02:44:14
【问题描述】:
我有一个form 进行计算,进入数据库并通过警报返回值。
我想将这个alert 替换为modal。
HTML
<form method="post" action="#">
<input type="text" name="alt" id="altura" required><br><br>
<input type="text" name="peso" id="peso" required><br><br>
<button type="submit" id="Send">Send</button>
</form>
PHP
function calcularIMC($altura,$peso){
$imc = 0;
if($altura >0 && $peso >0){
$imc = $peso / ($altura * $altura);
}
echo '<script>';
echo 'alert("'.$imc.'");';
echo '</script>';
}
我尝试如下:
- 在标签</html>代码后添加php;
- 增加了负责计算的变量:$imc;
- 我将按钮 Send 与 modal 链接。
<form method="post" action="#">
<input type="hidden" name="acao" id="acao" value="cadastrar"/>
<input type="text" name="alt" id="altura" required><br><br>
<input type="text" name="peso" id="peso" required><br><br>
<button type="submit" id="Enviar" data-toggle="modal" data-target="#myModal">Enviar</button>
</form>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<?php echo'.$imc.';?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</body>
</html>
PHP
<?php
function calcularIMC($altura,$peso){
$imc = 0;
if($altura >0 && $peso >0){
$imc = $peso / ($altura * $altura);
}
return $imc;
}
?>
因此,当我单击Send 按钮(带有所有空字段)时,它会打开模式并将'.$imc.' 显示为字符串。
当我插入数据并单击按钮Send 时,一个暗淡的窗口(模态的早期效果)并迅速恢复正常。我相信 modal 正在被调用,但有些拉伸它会产生错误并关闭。
我该如何解决这个问题?
AJAX,代码顶部:
<?php
$imc = false;
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$imc = calcularImc($_POST['altura'], $_POST['peso']);
}
?>
body结束
<?php
if ($imc !== false){
echo "<script>$('#myModal').modal('show');</script>";
}
?>
会是这个吗?我尝试添加此代码,但给出了相同的结果。通过提交表单,窗口变暗并迅速恢复正常。
---------------------------------更新/我设法做到了我想要的----- --------------------------
<form method="post" action="#">
<input type="text" name="alt" id="altura" required><br><br>
<input type="text" name="peso" id="peso" required><br><br>
<button type="submit" id="Send" data-toggle="modal" data-target="#myModal">Send</button>
</form>
<?php
$imc = false;
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$imc = calcularImc($_POST['altura'], $_POST['peso']);
}
?>
<?php
if ($imc !== false){
echo '<script src="https://code.jquery.com/jquery-2.2.3.min.js"></script>';
echo '<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>';
echo "<script>$('#myModal').modal('show');</script>";
}
?>
</body>
</html>
function calcularIMC($altura,$peso){
$imc = 0;
if($altura >0 && $peso >0){
$imc = $peso / ($altura * $altura);
}
echo '<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">';
echo $imc; // RESULT OF CALC MODAL INSIDE
echo '</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>';
}
?>
【问题讨论】:
-
你在哪里调用calcularIMC,你在哪里设置$imc?你的语法不正确。如果你想打印一个变量,只需使用
<?php echo $imc; ?> -
我想在
modal中调用calcularIMC。 $imc 在calcularIMC 中声明。由于我的语法错误,我该如何解决?你能帮我吗? -
你不能在已经渲染的页面上调用 php 代码。因此,您要么必须提交表单并在页面上检查表单是否已提交并自动打开模型,要么您必须向服务器发出 AJAX 请求以执行您的 PHP 代码。如果您不想刷新页面,请查找 AJAX。
-
@Laurens 我加了一个Ajax代码,请看一下,告诉我是多还是少这种代码?当我提交表单时,窗口变暗并迅速恢复正常。
-
它不是AJAX,因为你只是刷新页面,所以它是一个普通的post表单,这也很好。我稍后会检查你的代码是否有错误
标签: php html twitter-bootstrap bootstrap-modal