我正在尝试使用AJAX将数据提交到数据库。我有一个数组,我必须使用AJAX将数组的值传递给PHP,以显示所有相关记录。
<form id="search-form" method="POST">
<input value="4869" name="compare_id[]" type="hidden">
<input value="4884" name="compare_id[]" type="hidden">
<input value="5010" name="compare_id[]" type="hidden">
<input type="button" id="search-button" name="search-button" value="search">
</form>
<div id="response"></div>
AJAX
<script>
$(document).ready(function(){
$('#search-button').click(function(){
$.ajax( {
type: 'POST',
url: 'response.php',
data: $('#search-form').serialize(),
dataType: 'json',
success: function(response) {
$('#response').html(response);
//alert(response);
}
});
});
});
</script>
PHP
$sql='SELECT Name, Email FROM request WHERE Id IN (' .( is_array( $_POST['compare_id'] ) ? implode( ',', $_POST['compare_id']) : $_POST['compare_id'] ).')';
$records = array();
$query=$conn->query($sql);
if ($query->num_rows > 0) {
while($row=$query->fetch_assoc()){
$records[]=$row;
}
}
echo json_encode($records);exit();
答案 0 :(得分:1)
<强> HTML 强>
<form id="search-form" method="POST">
<input value="4869" name="compare_id[]" type="hidden">
<input value="4884" name="compare_id[]" type="hidden">
<input value="5010" name="compare_id[]" type="hidden">
<input type="button" id="search-button" name="search-button" value="search">
</form>
<div id="response"></div>
<强> JS 强>
<script>
$(document).ready(function(){
$('#search-button').click(function(){
$.ajax( {
type: 'POST',
url: 'response.php',
data: $('#search-form').serialize(),
dataType: 'json',
success: function(response) {
$('#response').html(response);
}
});
});
});
</script>
<强> PHP 强>
var_dump($_POST['compare_id']);
// it is already an array of ids. You can do whatever you want with it.
答案 1 :(得分:0)
您的代码中存在错误。调试此方法的一个好方法是在PHP脚本中print_r
POST
值。
第一个$_POST["All"]
不存在。它是all
。 (PHP)
其次,您发送的GET
请求不是POST
。 (jQuery的)
第三,将日期格式化为json。这样做的一个好方法是在compare_id.push
之后创建一个变量,它更具可读性:
var json_data = {"my_array" : [1,2, "bonjour", 4]};
您的问题主要与“如何调试”有关。我认为你应该记录正在发生的事情,以弄清楚发生了什么。
答案 2 :(得分:0)
更改您的脚本,如下所示。你的输出是在数组中,所以你不能直接在div中添加它
<script>
$(document).ready(function(){
$('#search-button').click(function(){
$.ajax( {
type: 'POST',
url: 'action.php',
data: $('#search-form').serialize(),
dataType: 'json',
success: function(response) {
$('#response').html();
for(data in response) //loop over your data
{
$('#response').append(response[data].Email); //add email
}
//alert(response);
}
});
});
});
</script>