好的,我正在使用jquery和php创建一个登录和注册面板。简而言之,如果注册时出现错误,则会设置一些表单错误,重定向回注册页面,javascript会检测到使用php变量时出错,并强制滑块显示自己。
工作代码:在文档类型$errors = $form->num_errors;
之上,整个$errors
例程正常。
我的问题是我还验证表单已成功提交。它使用
if(isset($_SESSION['regsuccess'])){
$success = 1;
} else {
$success = 0;
}
设置$success
变量。这里的疯狂事情是,使用与$error
变量相同的例程不起作用。我知道$success
条件工作正常,因为我已经在页面的下方回显了它。
jQuery幻灯片脚本:
$(document).ready(function() {
var num_errors = "<?php $errors; ?>";
var form_success = "<?php $success; ?>";
// Expand Panel
$("#open").click(function(){
$("div#panel").slideDown("slow");
});
// Collapse Panel
$("#close").click(function(){
$("div#panel").slideUp("slow");
});
// Switch buttons from "Log In | Register" to "Close Panel" on click
$("#toggle a").click(function () {
$("#toggle a").toggle();
});
//this part works
if(errors>0){
$("div#panel").slideDown();
$("#toggle a").toggle();
}
//this part doesn't
if(form_success>0){
$("div#panel").slideDown();
$("#toggle a").toggle();
}
});
演示页面在http://demo.ivannovak.com/danlogin/index.php
建议将不胜感激,谢谢!
答案 0 :(得分:2)
在您的网页中,您定义了errors
变量,这就是该部分有效的原因:
<script type="text/javascript" language="javascript">
<!--
errors = 0; // -->
</script>
您的javascript文件不是由php处理的,它由Web服务器直接提供,因此您的变量在上面列出的内容中:
var num_errors = "<?php $errors; ?>";
var form_success = "<?php $success; ?>";
那些完全以这种方式出现在客户端,他们没有被他们的价值取代。您需要将这两行移动到您现在有错误的页面中,并将其从引号中删除。将它们从你的js中取出并在你的页面中使用它:
<script type="text/javascript" language="javascript">
var num_errors = <?php $errors; ?>;
var form_success = <?php $success; ?>;
</script>