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


PHP if functions based on input information not working

基本上,我是从表单中提取信息,我想根据用户的输入回显不同的东西。但是,我只得到了第一个结果。我该如何解决这个问题?这是代码:

<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 中,但我无法弄清楚它是什么。提前谢谢。这是一个演示:

你在这里:)

 if ($t0 = "1")

正确:

if ($t0 == "1")

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

运算符 = 用于赋值。如果两种不同类型的类型不同,运算符 == 在两种不同类型之间进行转换,而 === 运算符执行"类型安全比较"。这意味着只有当两个操作数具有相同的类型和相同的值时,它才会返回 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

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;
    }

我已经使用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>