こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHP+Ajaxでプルダウンの連動

お世話になっております。久しぶりですが、わからないところが出てきたので、質問させてくださいませ。

現在、PHP+MySQLでホームページを作っています。
A(大カテゴリ)、B(小カテゴリ)のそれぞれのプルダウンを持っていて、
MySQL上では、BはどのAに所属しているかが格納されています。

その上で、
PHPソース
<script type="text/javascript" src="ajax.js"></script>
Aの部分
<select name="category" id="category" onChange="changePack(this)">
<option value="">--</option>
<option value="1">A-1</option>
<option value="2">A-2</option>
<option value="3">A-3</option>
</select>
Bの部分
<select name="pack" id="pack">
<option value="">--</option>
</select>

Ajax部分のソース
// 検索結果画面初期表示用
function setList() {
var Category = "0";
var Pack = "0";
setPackOption(Category);
document.rsv_input.category.selectedIndex = 0;
document.rsv_input.pack.selectedIndex = 0;
}

// カテゴリ選択時
function changePack(Category)
{
var Category;
getResult(Category.value);
}
function getResult(Category)
{
//XMLHttpRequestオブジェクト生成
var xmlhttp = createHttpRequest();
if (xmlhttp == null) {
return null;
}

var data = "";
data += "category=" + Category;

sendRequest(xmlhttp, "POST", "result.php", false, data, callBack);
}
function callBack(xmlhttp)
{
var result = xmlhttp.responseText;

var resArray = result.split(",");
for (i=0; i<resArray.length; i++) {
var packArray = resArray[i].split("/");
document.rsv_input.pack.options[i] = new Option(packArray[1], packArray[0]);
}
}

relust.phpのソース
$category = ( $_POST["category"] != "0" )? $_POST["category"] : '';
select文で「$category」を持つ、レコードから「小カテゴリ」のid、名称
を取得
$id = $Cols['id'];
$name = $Cols['name'];
$data .= ',' . $id . '/' . $name;
echo($data);

としておりますが、小カテゴリのプルダウンに$dataの中身が反映されません。(result.phpの$_POSTを$_GETに変更して単体で動かした場合は、$dataが読み取れる状態になります。)

http://www.okushin.co.jp/information/Ajax_report/06_sample02.php
を参考にさせていただいていますが、プルダウンの総数が違う。や、最終結果をテキストデータとしてhtml中に書き出すなど若干の相違点でつまずいています。
当方、PHP(0.5年)、JavaScript(0.5年)位の経験しか持ち合わせていないので、余計にわかってないだけかも知れません。

お手数をおかけいたしますが、修正箇所の指摘やその方法などを教えていただけませんでしょうか。よろしくお願いいたします。

投稿日時 - 2009-02-03 17:13:04

QNo.4686155

困ってます

質問者が選んだベストアンサー

すみません。ソースを見て細かい指摘まではできませんので、参考程度に・・・
$_GETでデータが取得できるのであれば、おそらくjavascript周りの問題だと思います。
基本的なこととして、プログラムが何処まで正常に走っていて、何処でエラーになっているのかを探してみたらどうでしょうか?
javascriptの場合ですと、ある程度の間隔でalertを表示してやるとかで、意図した動きが何処までできているのか確認することができると思います。
例えば、
result.phpにPOSTするのに、大カテゴリにvalが正常に取得できているのか
ですね。

すみません。たいした回答にならなくて・・・

投稿日時 - 2009-02-03 18:35:55

お礼

所々で、alertを表示させるようにして試してみました。
結果はNGだったんですが、試論の元はできたように思います。
次回もまた、同様のことで考えるタイミングは発生するだろうと思いますが、今回の経験を糧にしてクリアできるようになってみます。

どうも、ありがとうございました。

投稿日時 - 2009-02-27 16:25:46

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問