Ich versuche, die Werte von 7 jquery Checkboxen zu php über Ajax zu senden. Ich versuche, die Werte in ein Array zu setzen und das Array in Ajax zu serialisieren. Letztendlich möchte ich die Werte der Checkboxen als Bedingungen in einer MySQL WHERE-Klausel verwenden. Mein Ajax wird erfolgreich abgeschlossen, aber der Wert des Arrays ist immer null, unabhängig davon, welche Methode ich verwende.senden Checkbox-Werte zu PHP durch Ajax Ergebnisse in Null
CODE: Hinweis: Ich habe den Code hier aktualisiert, um die vorgeschlagenen Änderungen in den Antworten zu reflektieren.
Mein HTML-Code:
<label for="prestage_select">Prestage</label>
<input type="checkbox" name="revenue_checkboxes[]" id="prestage_select" class="revenuechbxs" value="Prestage">
<label for="validation_select">Validation</label>
<input type="checkbox" name="revenue_checkboxes[]" id="validation_select" class="revenuechbxs" value="Validation">
<label for="scheduling_select">Scheduling</label>
<input type="checkbox" name="revenue_checkboxes[]" id="scheduling_select" class="revenuechbxs" value="Scheduling">
<label for="production_select">Production</label>
<input type="checkbox" name="revenue_checkboxes[]" id="production_select" class="revenuechbxs" value="Production">
<label for="needsBOL_select">Needs BOL</label>
<input type="checkbox" name="revenue_checkboxes[]" id="needsBOL_select" class="revenuechbxs" value="Needs BOL">
<label for="shpAcct2Close_select">Shipped: Account to Close</label>
<input type="checkbox" name="revenue_checkboxes[]" id="shpAcct2Close_select" class="revenuechbxs" value="Shipped: Acctg. To Close Out">
<label for="movedToComplete_select">Moved to Complete for Selected Period</label>
<input type="checkbox" name="revenue_checkboxes[]" id="movedToComplete_select" class="revenuechbxs" value="Complete">
Meine Ajax-Code:
j("#create_submit").click(function(){
//send Revenue Data values to php using ajax.
var revenuechbxarray = j('.revenuechbxs:checked').val();
var revenuefrom = j('#revenuefrom').val();
var revenueto = j('#revenueto').val();
j.ajax ({
method: 'POST',
url: "revenue_report.php",
data: { revenuefromtext: revenuefrom, revenuetotext: revenueto, revenuechbx: revenuechbxarray },
success: function(response) {
j('#fieldset_ReportDiv').html(response);
}
});
console.log(revenuechbxarray);
Mein PHP-Code:
<?php
include('inc.php');
//Get date range.
$revenuefromajax=$_POST['revenuefromtext'];
$revenuetoajax=$_POST['revenuetotext'];
$revenuefromstring = strtotime($revenuefromajax);
$revenuetostring = strtotime($revenuetoajax);
$revenuefrom=date("Y-m-d", $revenuefromstring);
$revenueto=date("Y-m-d", $revenuetostring);
//Get selected Status Values.
$revenue_check = $_POST['revenuechbx']; //
print_r($revenue_check); //displays result of one checkbox (the first selected on) but not more than one...
//connect to the database
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if(mysqli_connect_errno()) {
printf('Could not connect: ' . mysqli_connect_error());
exit();
}
//echo 'MySQL Connected successfully.'."<BR>";
$conn->select_db("some database name"); /////Database name has been changed for security reasons/////////
if(! $conn->select_db("some database name")) {
echo 'Could not select database. '."<BR>";
}
// echo 'Successfully selected database. '."<BR>";
//Select Data and Display it in a table.
$sql = "SELECT invoices.id, invoices.orderdate, invoices.stagestatus, FORMAT(TRIM(LEADING '$' FROM invoices.totalprice), 2) AS totalprice, clients.company, lineitems.invoiceid, FORMAT((lineitems.width * lineitems.height) /144, 2) AS sqft, lineitems.quantity AS qty, FORMAT((invoices.totalprice/((lineitems.width * lineitems.height) /144)), 2) as avgsqftrevenue, FORMAT((TRIM(LEADING '$' FROM invoices.totalprice)/lineitems.quantity), 2) AS avgunitrevenue
FROM clients
INNER JOIN invoices ON clients.id = invoices.clientid
INNER JOIN lineitems ON invoices.id = lineitems.invoiceid
WHERE invoices.orderdate BETWEEN '".$revenuefrom."' AND '".$revenueto."'
ORDER BY invoices.id DESC";
$result = $conn->query($sql);
echo "<table id='revenueReportA' align='center' class='report_DT'>
<tr>
<th>Customer</th>
<th>SG</th>
<th>Revenue</th>
<th>SQ FT</th>
<th>AVG Revenue Per SQ FT</th>
<th>Number of Units</th>
<th>AVG Revenue Per Unit</th>
</tr>";
if ($result = $conn->query($sql)) {
// fetch associative array
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row['company'] . "</td>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" ."$". $row['totalprice'] . "</td>";
echo "<td>" . $row['sqft'] ." ". "ft<sup>2</sup>". "</td>";
echo "<td>" ."$". $row['avgsqftrevenue'] . "</td>";
echo "<td>" . $row['qty'] . "</td>";
echo "<td>" ."$". $row['avgunitrevenue'] . "</td>";
echo "</tr>";
}
echo "</table>";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Free the result variable.
$result->free();
}
//Close the Database connection.
$conn->close();
?>
ich verschiedene Vorschläge für das Senden der Werte versucht haben, php aber der Wert ist immer null.
Hinweis: Ich habe den anderen Ajax-Aufruf für Umsatz und Umsatz von Datum enthalten. Dieser Aufruf ist erfolgreich und meine Tabelle wird korrekt basierend auf diesen Daten angezeigt. Ich kann einfach nicht die tatsächlichen Werte für meine ausgewählten Checkboxen von der gleichen Seite wie die Daten erhalten.
Können Sie serialisierten String 'revenuechbxarray' anmelden? – xpuc7o
Ich sehe 2 Ajax Anrufe, die erste, wo Sie Ihre Checkboxes Daten senden haben keine Erfolgsfunktion – Dranes