0

データベースに新しい患者を追加し、jsonデータを取得してから、選択メニューに新しい患者を追加する関数があります。それはうまくいきます。そのデータを対応するテキスト入力、つまりinput#patient_id、input#patient_firstnameなどに追加する必要があります。これらは.ajax completeで発生するはずですが、何も起こりません。

助けていただければ幸いです!

アヤックス

$('#newpatient').click(function() {
var patientadd = $('#patientaddform').serializeArray();
  $.ajax({
      url:      'adam.php',
      type:     "POST",
      data:     patientadd,
      dataType: 'json',
      success:  function(data){
                    var html = '';
                    var len  = data.length;
                    for (var i = 0; i< len; i++) {
                    html += '<option selected="selected" value="' + data[i].patient_id + '">' + data[i].patient_firstname + ' ' + data[i].patient_lastname + ' : ' + data[i].patient_dob + '</option>';
                    }
                    alert(html);
                    $('#patientselect').prepend(html);
                    $('#patientselect').selectmenu('refresh', true);
                }, 
      complete: function (data) {
                   for(var id in data) {        
                          $('input#' + id).val( data[id] );
                   }
                }     

  });   

});

jsonデータが返されました

[{"patient_id":"22","patient_firstname":"","patient_lastname":"","patient_dob":"0000-00-00"}]

対応するテキスト入力フィールドはinput#patient_id、input#patient_firstnameなどです。そのため、ajax completeのidに「input#」を追加してから、そのvalをテキスト入力に追加しようとしています。

4

2 に答える 2

1

completeコールバックjqXHRのパラメータはとですtextStatus。ありませんdata。の正しい定義については、http://api.jquery.com/jQuery.ajax/を参照してください。complete(jqXHR, textStatus)

于 2012-09-23T15:51:51.823 に答える
0

jsonデータはオブジェクトの配列であるため、次のように配列の最初の要素を追加する必要があります。

for(var id in data[0]) {        
  $('input#' + id).val( data[0][id] );
}

または、サーバーの応答を調整する必要があります。

@techfoobarの答えも検討してください。

完全なコールバックのパラメータは、jqXHRとtextStatusです。データではありません。complete(jqXHR、textStatus)の正しい定義については、http: //api.jquery.com/jQuery.ajax/を参照してください。

于 2012-09-23T15:51:39.540 に答える