PHP如果基于输入信息的函数不起作用

时间:2013-09-28 06:43:37

标签: javascript php html forms input

基本上我从表单中提取信息,我希望根据用户的输入回显不同的东西。但是,我只获得了第一个结果。我怎样才能解决这个问题?这是代码:

<head>
    <title></title>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js" type="text/javascript"></script>
    <script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function showHide() {
            var div = document.getElementById("hidden");
            if (div.style.display == 'none') {
                 div.style.display = '';
            }
            else {
            }   
        }
    </script>

    <script type="text/javascript">
        $(function () {
            $('form').on('submit', function (e) {
                $.ajax({
                    type: 'post',
                    url: 'post.php',
                    data: $('form').serialize(),
                    success: function () {
                    alert('form was submitted');
                    }   
                });
            e.preventDefault();
            });
        });
    </script>
</head>
<body>
    <form action="" method="post">
        <input type="text" name="t0i"><input type="submit" onclick="showHide();">
    </form>
    <div style="display:none;" id="hidden">
        <?php
        $t0 = $_POST["t0i"];
        if ($t0 = "1") {
            echo "result 1";
        }
        elseif ($t0 = "2") {
            echo "result 2";
        }
        elseif ($t0 = "3") {
            echo "result 3";
        }
        else {
            echo "no result, try again";
        }
        ?>
    </div>
</body>

javascript是必不可少的,它在提交时显示隐藏的结果(display:none;),第二个脚本确保在提交表单后页面不刷新(所有内容都在同一页面上完成)。但是,删除这两个脚本并不能解决我的问题。我有一种感觉问题出在PHP中,但我无法弄清楚它是什么。提前致谢。这是一个演示:

4 个答案:

答案 0 :(得分:3)

你在这里:)

 if ($t0 = "1")

正确的:

if ($t0 == "1")

答案 1 :(得分:0)

像谢尔盖指出的那样,你需要使用双等号来进行比较。请查看手册页: http://php.net/manual/en/control-structures.if.php

答案 2 :(得分:0)

operator =用于赋值。运算符==如果它们不同则在两种不同类型之间进行转换,而===运算符执行“类型安全比较”。这意味着如果两个操作数具有相同的类型和相同的值,它将仅返回true。

示例:

$a = 1; // assign value
1 === 1: true
1 == 1: true
1 === "1": false // 1 is an integer, "1" is a string
1 == "1": true // "1" gets casted to an integer, which is 1
"foo" === "foo": true // both operands are strings and have the same value

你可以使用开关语句

切换:switch语句类似于同一表达式上的一系列IF语句。在许多情况下,您可能希望将相同的变量(或表达式)与许多不同的值进行比较,并根据它所等的值执行不同的代码。

   $t0 = $_POST["t0i"];
   switch ($t0) {
        case 1:
             echo "result 1";
            break;
        case 2:
             echo "result 2";
            break;
        case 3:
             echo "result 3";
            break;
        default:
            echo "no result, try again";
            break;
    }

答案 3 :(得分:0)

我已经使用Firebug进行了检查,它提供了未定义的索引:t0i 并且post不分配值。所以没有条件满满,所以你没有得到任何结果。

<head>
    <title></title>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js" type="text/javascript"></script>
    <script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function showHide() {
            var div = document.getElementById("hidden");
            if (div.style.display == 'none') {
                 div.style.display = '';
            }
            else {
            }   
        }
    </script>

    <script type="text/javascript">
        $(function () {
            $('form').on('submit', function (e) {
            var val=$('#t0i').val();
                $.ajax({
                    type: 'POST',
                    url: 'form.php',
                    data:{val:val},

                    success: function (data) {
        if (val == "1"){
             $('#hidden').html("result 1");
        }
        else if (val== "2"){
             $('#hidden').html("result 2");
        }
        else if (val == "3") {
            $('#hidden').html("result 3");
        }
        else {
            $('#hidden').html("no result, try again"); 
        }

                    }   
                });
            e.preventDefault();
            });
        });
    </script>
</head>
<body>
    <form action="" method="post">
        <input id="t0i" type="text" name="t0i"><input type="submit" onclick="showHide();">
    </form>
    <div style="display:none;" id="hidden">

    </div>
</body>