Php 使用Jquery$.post时查询不起作用
当我通过post将表单信息发送到流程页面时,这个查询运行良好。它呈现预期的信息。但是当我通过jquery通过$.post调用发送post信息时,我什么也得不到。如果我在查询中省略以registered_datetime开头的部分,它将按预期工作 我不得不相信这是我忽略的东西 以下是查询:Php 使用Jquery$.post时查询不起作用,php,jquery,sql,ajax,Php,Jquery,Sql,Ajax,当我通过post将表单信息发送到流程页面时,这个查询运行良好。它呈现预期的信息。但是当我通过jquery通过$.post调用发送post信息时,我什么也得不到。如果我在查询中省略以registered_datetime开头的部分,它将按预期工作 我不得不相信这是我忽略的东西 以下是查询: SELECT * FROM leads WHERE (first_name LIKE '" . $_POST['name'] . "%' OR last_name LIKE '". $_POST['name
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);
我解决了这个问题。事实上,我是在脚本末尾提交表单的,因此重置了提交的信息
<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.
});
我没有看到任何东西阻止我窃取你数据库中的所有信息,然后将其全部删除。使用预先准备好的语句。好的,从中获取数据。仍然无法回答我的问题,而且它也从未尝试过。m59使用注释为您提供了合理的建议。这就是他们的目的。好吧,我很感激你的关心,也许我真的想得太多了,但是1。这是本地存储上的测试数据库。因此,窃取数据的可能性很小。我错过什么了吗?我问查询或ajax调用是否有什么奇怪的地方,因为它没有按预期检索数据。我不知道为什么会被否决。@m59我离这个问题已经很远了。一年多前我还没有受过教育,根本不知道准备好的声明是什么。现在,这是我用来确保我构建的应用程序安全性的方法之一。我嘲笑自己在评论中发飙。无论如何,很抱歉,这是非常不必要的评论。但我在回顾我的老问题。