0

ページの作成時に選択したメニューを設定しようとしていますが、表示されるオプションがありません。

$(document).ready(function() {
$.ajax('patientlist.php', function(data){
    var html = '';
    var len = data.length;
    for (var i = 0; i< len; i++) {
        html += '<option value="' + data[i].patient_id + '">' + data[i].patient_firstname + data[i].patient_lastname + '</option>';}
    $('#patientselect').append(html);
});

});

私の患者リスト.php

$result = mysql_query("SELECT `patient_id`, `patient_firstname`, `patient_lastname` FROM `patients` WHERE `company_id` = " . $user_data['company_id'] . " ORDER BY `patient_firstname`");

while($row = mysql_fetch_assoc($result)) {

$data[] = $row;

echo json_encode( $data );

PHPページからの私の結果

[{"patient_id":"9","patient_firstname":"Adam","patient_lastname":"Steve"}] など...

助けてくれて本当にありがとう、これで1週間立ち往生しています!

4

1 に答える 1

1

というわけで再投稿。

まず、echo json_encode( $data );while ループの外側に置く必要があります

while($row = mysql_fetch_assoc($result)) {
  $data[] = $row;
}
echo json_encode( $data );

次に、$ajax構文が正しくありません。これをに変更して、応答を期待しているリクエストに$.post伝えます$.post'json'patientlist.php

$(document).ready(function() {
  $.post('patientlist.php', {}, function(data){
    /* code */
  }, 'json'); // <= set data type json here
});

有効な文字列を取得するときは、メソッドを使用してjson反復できますdata$.each

$.each(data, function(index, patient) {
  console.log(patient.patient_id); // or use patient['patient_id']
});

少なくとも、有効なリクエストを受け取るようになります。

HTML に注意してください。.appendそれが DOM 要素でない場合は使用しないでください。html 要素を文字列として構築しているだけなので、代わりに使用してください。

$('#patientselect').html(html);
于 2012-09-19T21:55:38.107 に答える