どの部分がページ応答なしの原因になったのかわかりません。これらのページは私のlubuntuマシンのホストです。ただし、別の LAN コンピューターからこのページにアクセスし、startDate を「2012-12-16」に、endDate を「2013-12-16」に選択すると、Chrome ブラウザーでページがフリーズします。いつフリーズするかわかりますか?を呼び出し$.get('duty.php'...
ても、アラートはポップアップできません。直行すると
/attendence/duty.php?mode=9&startDate=2012-12-06&endDate=2013-12-06&christened=すべて
リターンは
[]
*編集 2 *
理由が見つかり、別の「ばかげた」質問であることが判明しました。問題は によって引き起こされました$.get()
。ご覧のとおり、php からの出力は空の配列ですが[]
、これで問題ありません。それでも、$.get()
関数はそれを有効な応答として認識せず、ブラウザーのタイムアウトまで待機します。(jQuery 1.7.2 を使用) 回避策は、{'no','result'}
.
Apache2 アクセス.log
192.168.1.7 - - [06/Dec/2012:21:02:48 +0800] "GET /attendence/duty.php?mode=9&startDate=2012-12-06&endDate=2013-12-06&christened=すべて HTTP/1.1" 500 411 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.19 (Gecko のような KHTML) Ubuntu/11.10 Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/535.19"
$.get('duty.php',
{'mode':9,
'startDate':$('input[name=startDate]').val(),
'endDate':$('input[name=endDate]').val(),
'christened':$('input[name=christened]:checked').val()},
function(data, textStatus, jqXHR){
alert('result reach back');
if (typeof data === 'undefined') {
return;
}
numWeek = getDiffWeek();
tableHtml='Num Of week:'+numWeek+'<table border=1><tr>';
tableHtml+='<td>Barcode</td><td>name</td><td>attendence</td><td>frequency</td>';
tableHtml+=' </tr></table>';
$('#attendenceRate').html(tableHtml);
for(name in data){
attendenceRate = Math.round(data[name]['times']/numWeek*100);
memberIcon ='';
$('#attendenceRate table').append('<tr><td>'+data[name]['barcode']+'</td><td>'+name+'</td><td>'+attendenceRate+'%</td><td>'+data[name]['times']+'</td></tr>');
}
}
,'json'
);
編集はタイプミスです。Duty.phpではなく、duty.php にする必要があります。
include ("lock.php");
if($_GET){
if ($_GET['mode']==9){//calculate overall christian attendence
$startDate = $_GET['startDate'];
$endDate = $_GET['endDate'];
$christened=$_GET['christened'];
if($christened=='All'){
$christenedClause='';
}else{
$christenedClause= ' AND record.christened = '.$christened;
}
$sql = <<<EOD
SELECT name,barcode, COUNT( * ) AS times ,christened,gender
FROM (
SELECT name,attendence.barcode as barcode, DATE, TIME,christened,gender
FROM attendence, record
WHERE attendence.barcode = record.barcode
AND DATE
BETWEEN "$startDate"
AND "$endDate"
$christenedClause
GROUP BY name, DATE
)A
GROUP BY name
EOD;
$result = $link->query($sql);
$data = array();
$i=0;
if($result->num_rows>0){
while ($result2 = $result->fetch_assoc()){
$data[$result2['name']]['times'] = $result2['times'];
$data[$result2['name']]['barcode'] = $result2['barcode'];
$data[$result2['name']]['gender'] = $result2['gender'];
$data[$result2['name']]['christened'] = $result2['christened'];
$i++;
}
}
echo json_encode($data);
}
}