【发布时间】:2016-12-01 13:16:04
【问题描述】:
您好,以前我正在使用多选复选框来显示表格记录,可以在 here 找到。现在,我尝试通过使用AJAX方法来更改上一个,并删除提交按钮,当在没有提交按钮的情况下选择值时,它将被过滤该表。我的问题是使用 ajax 传递多个值。
index.php
<script>
function getCOMPANY(val) {
$.ajax({
type: "POST",
url: "ajax.php",
data:'companyname='+val,
success: function(data){
$("#company-list").html(data);
}
});
}
</script>
<form name="frmSearch" id="frmSearch" method="post" action="">
<label>Client Name </label>
<select id="multiple-checkboxes" multiple="multiple" class="companyInput" onChange="getCOMPANY(this.value);" name="COMPANYNAME[]">
<?php
$query = mysqli_query($conn_connection, "SELECT * FROM sl_iv GROUP by COMPANYNAME");
while ($row = mysqli_fetch_assoc($query)) {
echo "<option value='".$row["COMPANYNAME"]."'".($row["COMPANYNAME"]==$_POST["COMPANYNAME"] ? " selected" : "").">".$row["COMPANYNAME"]."</option>";
}
?>
</select>
</form>
<div name="state" id="company-list" class="companyInput">
<table>
<center>
<thead>
<tr>
<th width="3%" style="text-align:center"><span></span></th>
<th width="20%" style="text-align:center"><span>Customer Name</span></th>
<th width="10%" style="text-align:center"><span>Terms</span></th>
</tr>
</thead>
</center>
<tbody>
<?php
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$docno=$row['DOCNO'];
$cmpName=$row['COMPANYNAME'];
$m++;
?>
<tr data-toggle="collapse" data-target="#demo<?php echo $m?>" class="accordion-toggle">
<td><button class="glyphicon glyphicon-plus" type="button"><span class=""></span></button></td>
<td><input type="text" style="text-align:center; font-size:15px" class="form-control input-sm CompanyName" id="CompanyName0" name="CompanyName" value="<?php echo htmlspecialchars($row['COMPANYNAME']);?>" readonly></td>
<td><input type="text" style="text-align:center; font-size:15px" class="form-control input-sm terms" id="terms0" name="terms" value="<?php echo htmlspecialchars($row['terms']);?>" readonly></td>
</tr>
<tr>
<td></td>
<td colspan="10">
<div id="demo<?php echo $m?>" class="panel-collapse collapse">
<table class="table">
<tr style="background-color:#A9DC60; color:black;">
</tr>
<?php
$sql_1="SELECT * FROM `ar_iv` Inner Join `sl_iv` On ar_iv.DOCNO = sl_iv.DOCNO Inner Join `payment_terms` On ar_iv.TERMS = payment_terms.id WHERE sl_iv.`COMPANYNAME`='".$cmpName."' ";
$query_1 = mysqli_query($conn_connection, $sql_1);
while($DetRow = mysqli_fetch_assoc($query_1)) {
?>
<tr data-toggle="collapse" data-target="#demo<?php echo $m?>" class="accordion-toggle">
<td width="3%"><button class="glyphicon glyphicon-minus" type="button"><span class=""></span></button></td>
<td width="27%" style="text-align:center"><?php echo $DetRow['DOCNO'] ?></td>
<td width="10%" style="text-align:center"><?php echo htmlspecialchars($child['DOCAMT']); ?></td>
</tr>
<?php
}
?>
</table>
</div>
</td>
</tr>
<?php
}
}else {
echo "0 results";
}
?>
</tbody>
</table>
</div>
<script>
$(document).ready(function() {
$('#multiple-checkboxes').multiselect({
includeSelectAllOption: true
});
});
</script>
ajax.php
<?php
session_start();
require_once('../include/mysqlconnection.php');
$m=0;//div collapse
$query = "SELECT * From `sl_iv` Inner Join `ar_iv` On ar_iv.DOCNO = sl_iv.DOCNO Inner Join `payment_terms` On ar_iv.TERMS = payment_terms.id GROUP BY COMPANYNAME";
$results = mysqli_query($conn_connection,$query);
?>
<body class="reports" onload="calculateSum()">
<table>
<center>
<thead>
<tr>
<th width="3%" style="text-align:center"><span></span></th>
<th width="20%" style="text-align:center"><span>Customer Name</span></th>
<th width="10%" style="text-align:center"><span>Terms</span></th>
</tr>
</thead>
</center>
<?php
if(!empty($_POST['companyname'])) {
$COMPANYNAME = $_POST['companyname'];
$COMPANYNAME = is_array($COMPANYNAME) ? $COMPANYNAME : [$COMPANYNAME];
$companiesParam = '\''. join("', '", $COMPANYNAME) . '\'';
$fetch = "SELECT * FROM `sl_iv` Inner Join `ar_iv` On ar_iv.DOCNO = sl_iv.DOCNO Inner Join `payment_terms` On ar_iv.TERMS = payment_terms.id WHERE COMPANYNAME IN (".$companiesParam.") GROUP BY COMPANYNAME";
$results = mysqli_query($conn_connection,$fetch)or die("MySQL error: " . mysqli_error($conn_connection) . "<hr>\nQuery: $fetch");
}
if (mysqli_num_rows($results) > 0) {
while($row = mysqli_fetch_assoc($results)) {
$docno=$row['DOCNO'];
$cmpName=$row['COMPANYNAME'];
$m++;
?>
<tr data-toggle="collapse" data-target="#demo<?php echo $m?>" class="accordion-toggle">
<td><button class="glyphicon glyphicon-plus" type="button"><span class=""></span></button></td>
<td><input type="text" style="text-align:center; font-size:15px" class="form-control input-sm CompanyName" id="CompanyName0" name="CompanyName" value="<?php echo htmlspecialchars($row['COMPANYNAME']);?>" readonly></td>
<td><input type="text" style="text-align:center; font-size:15px" class="form-control input-sm terms" id="terms0" name="terms" value="<?php echo htmlspecialchars($row['terms']);?>" readonly></td>
</tr>
<tr>
<td></td>
<td colspan="10">
<div id="demo<?php echo $m?>" class="panel-collapse collapse">
<table class="table">
<tr style="background-color:#A9DC60; color:black;">
</tr>
<?php
$sql_1="SELECT * FROM `ar_iv` Inner Join `sl_iv` On ar_iv.DOCNO = sl_iv.DOCNO Inner Join `payment_terms` On ar_iv.TERMS = payment_terms.id WHERE sl_iv.`COMPANYNAME`='".$cmpName."' ";
$query_1 = mysqli_query($conn_connection, $sql_1);
while($DetRow = mysqli_fetch_assoc($query_1))
?>
<tr data-toggle="collapse" data-target="#demo<?php echo $m?>" class="accordion-toggle">
<td width="3%"><button class="glyphicon glyphicon-minus" type="button"><span class=""></span></button></td>
<td width="27%" style="text-align:center"><?php echo $DetRow['DOCNO'] ?></td>
<td width="10%" style="text-align:center"><?php echo htmlspecialchars($child['DOCAMT']); ?></td>
</tr>
<?php
}
?>
</table>
</div>
</td>
</tr>
<?php
}
}else {
echo "0 results";
}
?>
</table>
report.php
<?php
require_once('../include/mysqlconnection.php');
include("../include/mpdf/mpdf.php");
$m=0;
$COMPANYNAME = $_GET["COMPANYNAME"];
$terms = $_GET['terms'];
$item_q = "SELECT * From `sl_iv`";
if($COMPANYNAME!=""){
$item_q.= " WHERE COMPANYNAME = '".$COMPANYNAME."'";
}
if($terms != "")
{
$item_q.= " WHERE terms = '".$terms."'";
}
else{
$item_q.= " GROUP BY COMPANYNAME ";
}
$item = mysqli_query($conn_connection, $item_q);
//$mpdf=new mPDF('c','A4','','',32,25,47,47,10,10);
$mpdf = new mPDF(
'', // mode - default ''
'A4', // format - A4, for example, default ''
'', // font size - default 0
$stylesheet = file_get_contents('mpdf.css');
$mpdf->WriteHTML($stylesheet,1);
$header = '
<table>
</table>
';
$footer = '
';
$mpdf->SetHTMLHeader($header);
$mpdf->SetHTMLFooter($footer);
$html = '
<style>
.gradient {
background-color: #F0FFFF;
}
</style>
<p align="center" style="font color: #191970; font-size:20px"><b>Customer</b></p>
<table width="100%" class="no-spacing" style=" vertical-align: middle; font color: #191970; font-family: serif; font-size: 9pt;">
<thead>
<tr style="background-color:#F0FFFF;">
<th><span>Company Name</span></th>
<th><span>Terms</span></th>
</tr>
</thead>
<tbody>';
$mpdf->WriteHTML($html);
if (mysqli_num_rows($item) > 0) {
while($row = mysqli_fetch_assoc($item)) {
$m++;
$html = '
<tr>
<td>'.$row['COMPANYNAME'].'</td>
<td>'.$row['terms'].'</td>
</tr>
<tr>
<td></td>
<td colspan="7">
<div id="demo'.$m.'" class="accordian-body collapse">
<table class="no-spacing">
<tr>
</tr>
';
$mpdf->WriteHTML($html);
$sql_1="SELECT * FROM `ar_iv` Inner Join `sl_iv` On ar_iv.DOCNO = sl_iv.DOCNO WHERE sl_iv.COMPANYNAME ='".$row['COMPANYNAME']."'";
$query_1 = mysqli_query($conn_connection, $sql_1);
while($DetRow = mysqli_fetch_assoc($query_1)) {
$html = '
<tr data-toggle="collapse" data-target="#demo'.$m.'" class="accordion-toggle">
<td>'.$DetRow['DOCNO'].'</td>
<td>'.$DetRow['DOCAMT'].'</td>
</tr>';
$mpdf->WriteHTML($html);
}
$html = '
</table>
</div>
</td>
</tr>
<br>';
$mpdf->WriteHTML($html);
}
} else {
echo "0 results";
}
$html = '
</tbody>
</table>';
$mpdf->WriteHTML($html);
$filename = $search.".pdf";
$mpdf->Output($filename,I);
exit;
?>
【问题讨论】:
-
我不明白你为什么会这样做......!?如果您正在发出 ajax 请求...获取 JSON 并使用它使用 Underscore 模板或其他东西填充您的客户端模板。用 jQuery 将一堆 HTML 发送回一个 div 是一团糟!
-
从我之前所说的,我没有为我的代码使用任何 ajax,现在我尝试使用 ajax 方法,所以它会一团糟。对我来说它工作正常,我正在尝试使用 ajax。如果我错误地为我使用了 ajax 代码,请纠正我
-
如果您需要发送表单的内容,您需要在发送 ajax 时序列化表单:
data: $('#frmSearch').serialize()。这将发送表单的所有值。 -
另外,我真的没有看到发回 html 的问题,但是你的脚本是非常程序化的,它本质上看起来很混乱而且效率低下。我认为如果你用函数和/或类/方法清理你的脚本,它会对你的设置有很大帮助。
标签: javascript php jquery mysql ajax