0

我有一个函数可以将新患者添加到数据库,获取 json 数据,然后将新患者添加到选择菜单中。这很好用。我需要将该数据添加到相应的文本输入中,即 input#patient_id、input#patient_firstname 等,这应该在 .ajax 完成中出现,但没有任何反应。

将不胜感激任何帮助!

阿贾克斯

$('#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 等,这就是为什么我尝试将“input#”添加到 ajax 完成中的 id,然后将该 val 添加到文本输入。

4

2 回答 2

1

complete回调的参数是jqXHRtextStatus。不是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。不是数据。有关完整的正确定义,请参见http://api.jquery.com/jQuery.ajax/ (jqXHR, textStatus)

于 2012-09-23T15:51:39.540 回答