1

私はまだ AJAX を使い始めたばかりで、苦労しています。これを手伝ってもらえますか? 私は実際にドロップダウンを持っており、そのドロップダウンで項目を選択すると、クエリのテーブルが tbody.here に出力されるはずです。私のコードは次のとおりです。

PHP コード:

<select id="proj_id" name="proj_id" onchange="myFunction(this.value)">

    <option value="none">---select project---</option>
    <?php
    //Projects
    $r = @mysql_query("SELECT `proj_id`, `proj_name` FROM `projects`");

    while($rows = mysql_fetch_assoc($r)) {
        $proj_id = $rows['proj_id'];
        $proj_name = $rows['proj_name'];
        echo '<option value='.$proj_id.'>'.$proj_name.'</option>';
    }
    ?>
</select>

<table>

<thead>
    <tr>
        <th>Project Name</th>
        <th>Material Name</th>
        <th>Quantity</th>
        <th>Status</th>
    </tr>
</thead>
<tbody id="project_estmat">
<?php
    //Display Requests
    $r = @mysql_query("SELECT `proj_name`, `mat_name`, `req_qty`, `stat_desc` FROM `requests` JOIN `projects` USING(`proj_id`) JOIN `materials` USING(`mat_id`) JOIN `status` ON(requests.stat_id = status.stat_id)");

        while ($row = mysql_fetch_array($r)) {
            echo '<tr>';
            echo '<td>'.$row['proj_name'].'</td>';
            echo '<td>'.$row['mat_name'].'</td>';
            echo '<td>'.$row['req_qty'].'</td>';
            echo '<td>'.$row['stat_desc'].'</td>';
            echo '</tr>';
        }
?>
</tbody>
</table>

JSコード:

function myFunction(value){

if(value!="none")
{
    $.ajax(
    {
        type: "POST",
        url: 'content/admin/requests.php',
        data: { proj_id: value},
        success: function(data) {
    $('#project_estmat').html(data);

    }
});
}
else
{
    $('#project_estmat').html("select an item");
}

}

テーブルである#project_estmatにあるはずのこのPHPコードがあります。そして、ここに問題があると思います。アイテムを選択するたびに、テーブルに何も印刷されないためです。空のデータが表示されます。

<?php
if (isset($_POST['proj_id'])) {

    $r = @mysql_query("SELECT `proj_name`, `mat_name`, `req_qty`, `stat_desc` FROM `requests` JOIN `projects` USING(`proj_id`) JOIN `materials` USING(`mat_id`) JOIN `status` ON(requests.stat_id = status.stat_id)");
    if($r){
        while ($row = mysql_fetch_array($r)) {
            echo '<tr>';
            echo '<td>'.$row['proj_name'].'</td>'; 
            echo '<td>'.$row['mat_name'].'</td>';
            echo '<td>'.$row['req_qty'].'</td>';
            echo '<td>'.$row['stat_desc'].'</td>';
            echo '</tr>';
        }
    }
exit;
}
?>
4

5 に答える 5

2

$.ajax 関数をラップした場合は${ 、次のようになります。changeを使用してみて、これを行うときにインライン関数呼び出しを削除します。

$('#proj_id').change(function() {
var value = $(this).val();
    if(value!="none"){
        $.ajax({
            type: "POST",
            url: 'content/admin/requests.php',
            data: { proj_id: value},
            success: function(data) {
                $('#project_estmat').html(data);
                alert(data);//check whats coming from the server side 
            }
        });
    }
});

次のようなサーバー側への単純化されたphpコードでテストされました。

<?php 
if (isset($_POST['proj_id'])) {
            echo '<tr>';
            echo '<td>A</td>'; 
            echo '<td>B</td>';
            echo '<td>C</td>';
            echo '<td>D</td>';
            echo '</tr>';

}
?>
于 2013-01-02T10:52:06.940 に答える
0

関数 mysql_query は PHP 5.5.0 で廃止され、削除されるため、使用しないでください ( http://php.net/manual/en/function.mysql-query.php )。PHP PDO クラス ( http://php.net/manual/en/book.pdo.php ) を使用することをお勧めします。

于 2013-01-02T11:19:12.377 に答える
0

'@' error_compression 演算子を使用してエラーを抑制しないでください。mysql_query から @ 記号を削除し、コードのデバッグを試みます。

于 2013-01-02T15:27:04.163 に答える
0

if条件に「$」が余分にあることを除いて、すべて問題ないように見えます

if(value!="none")
${  //here

「$」記号を削除すると機能するはずです...

于 2013-01-02T10:53:38.577 に答える
-1

文字列を作成して送り返してみてください。

$str = '';
if($r){
    while ($row = mysql_fetch_array($r)) {
        $str .= '<tr>';
        $str .= '<td>'.$row['proj_name'].'</td>'; 
        $str .= '<td>'.$row['mat_name'].'</td>';
        $str .= '<td>'.$row['req_qty'].'</td>';
        $str .= '<td>'.$row['stat_desc'].'</td>';
        $str .= '</tr>';
    }
    return $str;
}

ループが完了したら、文字列を送り返すことができます。dataTypeプロパティ.ajax()intelligent parsing、返されるデータのタイプと返されるオブジェクトの作成方法を決定するために使用されますが、宣言するだけで済みます。

$.ajax({
    type: "POST",
    url: 'content/admin/requests.php',
    data: { proj_id: value},
    dataType:'html',
    success: function(data) {
        $('#project_estmat').html(data);
    }
});
于 2013-01-02T10:52:17.877 に答える