【问题标题】:Query not working when I use Jquery $.post当我使用 Jquery $.post 时查询不起作用
【发布时间】:2013-12-15 23:02:56
【问题描述】:

当我通过 post 将表单信息发送到流程页面时,此查询运行良好。它呈现预期的信息。但是,当我通过 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 和表单的索引页面:

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

【问题讨论】:

  • 我没有看到任何东西阻止我窃取您数据库中的所有信息,然后将其全部删除。使用准备好的语句。
  • 好吧,窃取数据很有趣。仍然没有回答我的问题。
  • 它从未尝试过。 m59 使用 comment 给了你一个合理的建议。这就是他们的目的。
  • 好的,我很感激你的关心,也许我真的想太多了,但是 1. 这是本地存储上的测试数据库。所以窃取数据的可能性很小。我错过了什么吗?我问查询或 ajax 调用是否有任何奇怪的地方,因为它没有按预期检索数据。不知道为什么这被否决了。
  • @m59 我已经远离这个问题了。一年多前我没有受过教育,不知道准备好的陈述是什么。现在这是我用来确保我构建的应用程序安全的方法之一。我嘲笑自己在 cmets 中爆炸。无论如何,很抱歉这个非常不必要的评论。但我正在查看我的旧问题。

标签: php jquery sql ajax


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多