使用Jquery $ .post时查询无法正常工作

时间:2013-12-15 23:02:57

标签: php jquery sql ajax

当我通过帖子将表单信息发送到流程页面时,我的查询运行正常。它呈现预期的信息。但是当我通过jquery通过$ .post调用发送帖子信息时,我什么都没得到。如果我在查询中省略了以registered_datetime开头的部分,它将按预期工作。

我必须相信这是我忽视的事情。

以下是查询:

SELECT * FROM leads 
WHERE (first_name LIKE '" . $_POST['name'] . "%' 
OR last_name LIKE '". $_POST['name'] ."%') OR
registered_datetime BETWEEN '". date_fix($_POST['from_date']) ."' AND '" . date_fix($_POST['to_date']) . "'";

这是具有jquery和form的索引页面:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    </script>
    <script>
        $(document).ready(function(){
            $('#search').keyup(function(){
                $('#test_form').submit();
            });
            $('#test_form').submit(function(){
                $.post(
                        $(this).attr('action'),
                        $(this).serialize(),
                        function(data){
                            $('#results').html(data.html);
                        },
                        "json"
                    );
                return false;
            });
            $('#test_form').submit();
        });
    </script>
</head>
<body>
    <form id="test_form" action="process.php" method="post">
        Name: <input type="text" name="name" id="search">
        From: <input class="datepicker" type="text" name="from_date" id="from_date">
        To: <input class="datepicker" type="text" name="to_date" id="to_date">
    </form>
    <div id="results"></div>
</body>

以下是流程页面:

require_once('connection.php');
    function date_fix($date) {
        $fix = explode('/', $date);
        $new_date = $fix[2] . '-' . $fix[0] . '-' . $fix[1];
        return $new_date;
    }
    // var_dump($_POST);
    $query =  "SELECT * FROM leads 
               WHERE (first_name LIKE '" . $_POST['name'] . "%' 
               OR last_name LIKE '". $_POST['name'] ."%') OR
               registered_datetime BETWEEN '". date_fix($_POST['from_date']) ."' AND '" . date_fix($_POST['to_date']) . "'";
    // var_dump($_POST);
    // var_dump($query);
    $users = fetchAll($connection, $query);
    $data = array();
    $html = "
    <table>
        <thead>
            <tr>
                <th>User ID</th>
                <th>First Name</th>
                <th>Last Name</th>
                <th>Registered Datetime</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
        ";

    foreach ($users as $user) {
        $html .= 
            '<tr>
                 <td>' . $user['id']  . '</td>
                 <td>' . $user['first_name']  . '</td>
                 <td>' . $user['last_name']  . '</td>
                 <td>' . $user['registered_datetime']  . '</td>
                 <td>' . $user['email']  . '</td>
            </tr>';
    }
    $html .= '</tbody></table>';

    $data['html'] = $html;
    // echo $data['html'];
    echo json_encode($data);

1 个答案:

答案 0 :(得分:0)

我想出了这个问题。实际上,我在脚本末尾提交表单,因此重置了提交的信息。

 <script>
        $(document).ready(function(){
            $('#search').keyup(function(){
                $('#test_form').submit();
            });
            $('#test_form').submit(function(){
                $.post(
                        $(this).attr('action'),
                        $(this).serialize(),
                        function(data){
                            $('#results').html(data.html);
                        },
                        "json"
                    );
                return false;
            });
            $('#test_form').submit(); // IF I OMIT THIS IT WILL WORK AS EXPECTED.
        });