0

基本上我正在从表单中提取信息,并且我想根据用户的输入来回显不同的内容。但是,我只得到第一个结果。我怎样才能解决这个问题?这是代码:

<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 是必不可少的,它在提交时显示隐藏的结果(显示:无;),第二个脚本是确保提交表单后页面不会刷新(一切都在同一页面上完成)。但是,删除这两个脚本并不能解决我的问题。我感觉问题出在 PHP 中,但我不知道是什么问题。提前致谢。这是一个演示:

4

4 回答 4

3

给你 :)

 if ($t0 = "1")

正确的:

if ($t0 == "1")
于 2013-09-28T06:48:23.410 回答
0

我已经使用 Firebug 进行了检查,它给出了 Undefined index: 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>
于 2013-09-28T07:29:41.990 回答
0

运算符 = 用于赋值。运算符 == 在两种不同类型之间进行转换(如果它们不同),而 === 运算符执行“类型安全比较”。这意味着只有当两个操作数具有相同的类型和相同的值时,它才会返回 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: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;
    }
于 2013-09-28T06:59:08.423 回答
0

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

于 2013-09-28T06:53:57.663 回答