1

「選択」ボックスのあるフォームがあります。ボックスを選択したときに、データベースの適切なレコードを同じページに表示したいと思います。

関連するファイルは2つあります。フォームを含むHTMLページ:

<form id="theForm">
<select id="theDropdown">
<option value="biology">Biology</option>
<option value="chemistry">Chemistry</option>
<option value="english">English</option>
</select>
</form>
<div id="resultsGoHere"></div>

また、jQueryコードも含まれています。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

    $('#theDropdown').on('change', function() {
       var qString = '{sub: ' + $('#theDropdown option:selected').text() + '}';
       $.post('sub_db_handler.php', qString, processResponse);
       // $('#resultsGoHere').html(qString);
    });

    function processResponse(data) {
        $('#resultsGoHere').html(data);
    }

});
</script>

jQueryコードは、選択メニューの選択された値を正常に取得し、JSONクエリ文字列をフォーマットしているようです。この文字列は、上記のコメント行がコメント化されていない場合に出力されます。

post上記のコマンドで参照されているPHPスクリプトは次のとおりです。

<?php

$con = mysql_connect("localhost","rongilmo_ron","******");
if(!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("rongilmo_databases", $con);
$sub = $_POST['theDropdown'];

$q = "SELECT dbs.db_name, dbs.db_url FROM dbs, subjects, subjects_databases
WHERE subjects.subject_id=subjects_databases.subject_id
AND subjects_databases.database_id=dbs.db_id
AND subjects.subject_name='$sub'";

$r = mysql_query($q);
$array = mysql_fetch_row($r);
echo json_encode($array);

?>

結果がまったく得られません。非ajaxモードでクエリをテストしたので、それは問題ではありません。

ajaxはまだ新しいです。私はこれに2日間取り組んできましたが、たくさんのチュートリアルを読んだり、たくさんのグーグルをしたりしたにもかかわらず、うまくいかないようです。

あなたが提供できるどんな助けも大いに感謝されるでしょう。

4

2 に答える 2

1

選択した名前属性を指定します。

<form id="theForm">
    <select id="theDropdown" name="theDropdown">
        <option value="biology">Biology</option>
        <option value="chemistry">Chemistry</option>
        <option value="english">English</option>
    </select>
</form>
<div id="resultsGoHere"></div>

アップデート。 PHP は、JSON ではなく、標準の URL エンコード表記のクエリ文字列を想定しています。次の方法で送信すると、$_POST 配列に、選択したオプションの値を持つ「sub」が含まれます。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

    $('#theDropdown').change(function() {   
        var qString = 'sub=' +$(this).val();
        $.post('sub_db_handler.php', qString, processResponse);
    });

    function processResponse(data) {
        $('#resultsGoHere').html(data);
    }

});
</script>

<?php

    $con = mysql_connect("localhost","rongilmo_ron","******");
    if(!$con) { die('Could not connect: ' . mysql_error()); }
    mysql_select_db("rongilmo_databases", $con);
    $sub = $_POST['sub'];

    $q = "SELECT dbs.db_name, dbs.db_url FROM dbs, subjects, subjects_databases
    WHERE subjects.subject_id=subjects_databases.subject_id
    AND subjects_databases.database_id=dbs.db_id
    AND subjects.subject_name='$sub'";

    $r = mysql_query($q);
    $array = mysql_fetch_row($r);
    echo json_encode($array);

?>
于 2012-05-11T19:07:47.843 に答える
0

json 文字列を返すには、ajax $.getJson() を使用する必要があります。json 文字列で $each を使用する必要があります。Web サイトhttp://api.jquery.com/jQuery.getJSON/の jquery ドキュメントを参照してください。

于 2012-05-11T19:23:51.453 に答える