callback関数が起動しない
新人プログラマーです。
Javascript/PHP/MySQLで検索→リスト表示のプログラムを作っています。
Javascriptの中で、Ajax通信は行うようですが、callバック関数が起動しません。
ブレークポイントを設定しても★★のところで終了してしまい、function callback(request)が
起動しない状態です。
以前も似たようなことがあり(そのときはJASONの形式が不正でうまくcallback関数が起動しなかった)、この掲示板で助けて頂いたのですが、
PHP側を丁寧に見てみましたが、データベースの検索はちゃんとできて、JSONの形式で渡せているようです。
コンソールには
[{"id":"1","customerName":"山田 アヤ","category":"果物","jusyo1":"東京都新宿区新宿","latestDate":"2012-12-22","reserveDate":"2012-12-22"},{"id":"2","customerName":"田中 かおる","category":"野菜","jusyo1":"東京都中央区銀座","latestDate":"2012-12-10","reserveDate":"2012-12-31"}]
と表示されていますので、JASONは生成されていると判断しました。
なぜcallバック関数が起動しないのか、どなたか教えて下さい。
よろしくおねがいします。
【Javascript側】
// 一覧検索
function doAction(){
var category = $('#category').val();
// Ajax通信
★★ $.getJSON('code/CustomerList2.php', {"category":category}, callback);
}
// 一覧表示用callback関数
function callback(request){
console.log(request);
var json = eval(request);
var res = '';
for (var i = 0; i < json.length; i++){
res += '<tr>'
+ '<td>' + json[i].customerName + '</td>'
+ '<td align="center">' + json[i].category + '</td>'
+ '<td>' + json[i].jusyo1 + '</td>'
+ '<td align="center">' + json[i].latestDate + '</td>'
+ '<td align="center">' + json[i].reserveDate + '</td>'
+ '<td align="center"><a href="customerdetail.html?id=' + json[i].id + '">詳細</td>'
+ '</tr>';
}
var obj = document.getElementById("datatable");
obj.innerHTML ='<tr><td>お客様名</td><td>分類</td><td>住所1</td><td>最終来店日</td><td>ご予約日</td><td>詳細</td></tr>'
+ res;
}
//-->
【PHP側】
if ($category == 'すべて'){
$sql = "SELECT * FROM tbl_customer" ;
}else{
$sql = "SELECT * FROM tbl_customer WHERE category = '" .$category. "'";
}
$res = mysql_query($sql, $conn);
print "res==="."$res<br />";
$result = "[";
while($row = mysql_fetch_array($res)){
$result = $result. "{\"id\":\"" .$row["customerId"].
"\",\"customerName\":\"" .$row["customerName"].
"\",\"category\":\"" .$row["category"].
"\",\"jusyo1\":\"" .$row["jusyo1"].
"\",\"latestDate\":\"" .$row["latestDate"].
"\",\"reserveDate\":\"" .$row["reserveDate"].
"\"},";
}
print "1)result==="."$result<br />";
$len = strlen($result);
if($len != 1){
$result = substr($result,0,($len - 1)); // 最後の「,」を切り取る
}
$result = $result. "]";
print "2)result==="."$result<br />";
// 出力
echo $result;
mysql_free_result($res);
お礼
詳しい解説ありがとうございます。 例の通りにやって解決しました! 参考の方も勉強してみます。