1

PHP ページから JSON を取得しようとしていますが、常に「未定義」を受け取ります。

私のjQueryコードは次のとおりです。

<script>
    $(document).ready(function(){
        $("#lista_partecipanti").click(function(){
            $.post( "application/third_party/php_files/lista_partecipanti.php",
            { 
                user_id:<? echo $user_id; ?> , jam_id:<? echo $id_jam; ?>
            }, 
            function(data)
            {
                if(data) {
                    $("#div_lista_partecipanti").html('test' + data[0].username);
                }
                else
                {
                    alert("Error");                                     
                }
            });
        });
    });
</script>

私のPHPコードは次のとおりです。

<?php
include 'db_connect.php';

$a_id = $_POST['user_id'];
$b_id = $_POST['jam_id'];

$query = mysql_query("SELECT * FROM User a, Jam b WHERE a.id = b.owner AND a.id = $a_id AND b.id = $b_id");

if(mysql_num_rows() == 1) 
{
    $row = mysql_fetch_assoc($query);
    $data = array(
            'username' =>$row['username'],
            'user_id' => $row['id']
    );
    $data = json_encode($data);
    echo $data;    
}
else
    return false;

mysql_close();
?>

解決済み

私は問題を解決しました.PHPの問題ではありませんでしたが、エラーはjqueryコードにありました. ちょうど追加しました

data = $.parseJSON(data);

$("#div_lista_partecipanti").html(data.username);
4

3 に答える 3

2

他に指定していないので、PHP は HTML ドキュメントを出力していると主張し、jQuery は JSON を HTML であるかのように扱います。

header("Content-Type: application/json");PHP から何かを出力する前に追加します。


次に、JSON テキストは、オブジェクトの配列ではなく、単一のオブジェクトで構成されています。

data[0].username公正であるべきdata.username

于 2013-09-18T13:38:56.173 に答える
0

まず、mysql インジェクションに対して非常にオープンです。mysqliまたはpdoの準備済みステートメントを使用する必要があります。

次に、ループ内で JSON をエコーするべきではありません。そのようには機能しません。すべてのデータを配列に追加してからjson_encodeループの後に返す必要がありますが、例では 1 つの項目だけですが、それでも.

<?php
include 'db_connect.php';
header("Content-Type: application/json");

$a_id = $_POST['user_id'];
$b_id = $_POST['jam_id'];

$query = mysql_query("SELECT * FROM User a, Jam b WHERE a.id = b.owner AND a.id = $a_id AND b.id = $b_id");

if(mysql_num_rows() >= 1) {
    $data = array();
    while($row = mysql_fetch_assoc($query)){
        $data[] = array(
            'username' =>$row['username'],
            'user_id' => $row['id']
        );
    }
    echo json_encode($data);
} else {
    echo json_encode([]);
}
mysql_close();
于 2013-09-18T13:45:25.263 に答える
-1
        jQuery.ajax({
            type: "POST",
            url: "application/third_party/php_files/lista_partecipanti.php",
            data: "userid="+<?php echo $user_id; ?>+"&jam_id="<?php echo $id_jam; ?>,
            cache: false,
            success: function(response) {
                    ... 
                }
            }
        );
于 2013-09-18T13:44:15.717 に答える