使用javascript if语句时出现问题

时间:2010-02-01 01:44:03

标签: php javascript jquery html

好的,我正在使用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

建议将不胜感激,谢谢!

1 个答案:

答案 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>