0
なぜ私のPHP関数が空の配列を返すのか理解しようとしています。 ajax呼び出しをトリガーするイベントは、ドロップダウンが変更されたときにPHP関数にヒットしたときです。ほとんどの場合、データベースからデータが返されますが、まったく同じこと(ドロップダウンの変更)にもかかわらず、何が起こる可能性がありますか?基本的には、返される内容を確認するためにconsole.logを使用していますが、時には何もありません。同じ入力で他の時間にもかかわらず、それはうまく動作します。時々ajaxデータベース呼び出しが空の配列を返しますか?
$(document).ready(function() {
$("#qtrselect").change(function() {
qtrselection = $("#qtrselect").val();
createQtrTable(qtrselection);
$('#qtrselect').prop('disabled', true);
setTimeout(function() {
$('#qtrselect').prop('disabled', false);
}, 1000);
});
});
function createQtrTable(qtrselection, id) {
$.ajax({
type : 'POST',
url : 'createnewtable.php',
data : {qtrdate: qtrselection, id: id},
success : function(response)
{
response = jQuery.parseJSON(response);
totalcommision = 0;
totalpayments = 0;
for (i = 0; i < response.length; i++) {
totalcommision += parseFloat(response[i][0]);
totalpayments += parseFloat(response[i][3]);
}
//I've cut out a bit here as it's not really needed to see the problem.
}
});
}
createnewtable.php
$qtrdate = $_POST['qtrdate'];
$id = $_POST['id'];
$startdate = '';
$enddate = '';
switch ($qtrdate) {
case 0:
$startdate = '2016-01-01' ;
$enddate = '2018-12-30';
break;
case 1:
$startdate = '2016-08-01' ;
$enddate = '2016-10-31';
break;
case 2:
$startdate = '2016-11-01' ;
$enddate = '2017-01-31';
break;
case 3:
$startdate = '2017-02-01' ;
$enddate = '2017-04-30';
break;
case 4:
$startdate = '2017-05-01' ;
$enddate = '2017-07-31';
break;
}
try
{
$stmt = $db_con->prepare("SELECT com.commisionAmount, stu.studentName, pay.paymentDate, pay.paymentAmount FROM `commisions` as com INNER JOIN `accounts` as acc ON com.commisionAccount = acc.id INNER JOIN `studentpayments` as pay ON com.paymentID = pay.id INNER JOIN `students` as stu ON pay.paymentStudent = stu.id WHERE pay.paymentDate BETWEEN '$startdate' AND '$enddate' AND acc.id = '$id'");
$stmt->execute();
$results = $stmt->fetchAll();
$results = json_encode($results);
echo $results;
}
catch(PDOException $e){
echo $e->getMessage();
}
感謝。
はありがとうございIDが必要です!まあそれではありませんでした...まあそれはそうでしたが、そうではありませんでした。私は、私のHTMLページ上にいくつか古いコードがあり、関数が2度呼び出されたことに気付きました。 –