我希望在db mysql中插入用户,我有一个控制器php,我验证用户是否通过函数存在于db中,然后如果或不存在我想要显示警报功能重定向到php页面,为此我使用:< / p>
<?php
if(dao::existUser($user)) {
echo "<script type=\"text/javascript\">\n";
echo "alert('user exist!');\n";
echo "window.location = ('../insertUser.php');\n";
echo "</script>";
}
这个功能有效!!但 我想将函数封装在一个方法中以便以后调用它
示例:
<?php
class Utils {
static function responseText($message, $url) {
echo "<script type=\"text/javascript\">\n";
echo "alert('"+$message+"');\n";
echo "window.location = ('"+$url+"');\n";
echo "</script>";
}
}
然后,在我的控制器中:
<?php
if(dao::existUser($user)) {
Utils::responseText("user exist",'../insertUser.php');
}
但不起作用,并在调用responseText后,我的页面变为空白
答案 0 :(得分:0)
我不知道出了什么问题(可能是引用问题),但我建议使用HEREDOC样式并返回文本本身不输出HTML。后者可能很难通过查看调用它的类来跟踪此输出的来源。通过allcomb_var <- expand.grid(var1 = tbl_colnames, var2 = tbl_colnames,
stringsAsFactors = FALSE)
allcomb_var %>%
purrr::pmap(.f = dens_wrapper, tbl=tbl)
,您可以轻松地看到它输出的内容,whiteout必须查看课程的内容。
所以喜欢这个。
np.log10
HEREDOC是一种不使用任何引号进行文本块的方法,请注意我在评论中添加的注释...在这种情况下,当您不必管理时,它会使Javascript字符串变得更加简单报价用法。
这个类的另一个建议是,如果它是静态方法的集合,你可以将它设置为无法实例化(使用new class()创建)这样
echo Utills::..
这样你就不会意外地做<?php
class Utils {
static function responseText($message, $url) {
return <<<HTML
<script type="text/javascript">
alert('$message');
window.location = '$url';
</script>
HTML; //nothing can go here no space ( before or after ) and not even this comment, nothing but HTML; litterally
}
}
echo Utils::responseText("user exist",'../insertUser.php');
这是一件小事,但它会确保这门课的所有方法都保持静止。这只是我喜欢做的一个设计事情,单身人士和静态课程
更新您的问题是您正在使用<?php
class Utils {
private function __construct(){} //no instantion
private function __clone(){} //no cloning
在PHP中进行连接,您应该使用$U = new Utils(); $U->responseText(..)
+
对Javascript不利非常适合PHP
使用.
双引号concat的方式是不必要的,而不是
+
尝试
"
答案 1 :(得分:-1)
如果我理解你正确地将javascript
绑定到php
。
<?php
$script = '<script type="text/javascript">';
$script .= 'function showAlert(){';
$script .= 'alert("Hello World.");';
$script .= '}';
$script .= '</script>';
echo $script;
?>
比页面加载后你可以打电话给它!
<script type="text/javascript">
window.onload = function () {
showAlert();
}
</script>