2012-09-23 119 views
0

我有一個功能,可以將新患者添加到數據庫,獲取json數據,然後將新患者添加到選擇菜單。這工作正常。我需要將這些數據添加到相應的文本輸入中,即輸入#patient_id,輸入#patient_firstname等,這應該發生在.ajax完成,但沒有任何反應。將json數據插入文本輸入

希望有任何幫助!

的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"}] 

相應的文本輸入框輸入#patient_id,輸入#patient_firstname,等等,這就是爲什麼我想在「輸入#」添加到該ID在阿賈克斯完成,然後將該val添加到文本輸入。

回答

0

您的JSON數據對象的數組,所以你必須拿添加像這樣的數組的第一個元素:

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

或者你必須適應服務器響應。

還要考慮@ techfoobar的回答是:

的完整調用的PARAMS背後,是jqXHR和textStatus。不是數據。見http://api.jquery.com/jQuery.ajax/完整的正確定義(jqXHR,textStatus)

+0

我明白了爲什麼這應該工作,但我的文本輸入不顯示值。有什麼想法嗎? – Adam

+0

@ user28061它完美的工作!我也必須將這個函數移到ajax的成功之處。謝謝,我真的很感謝你的幫助! – Adam

1

的PARAMS的complete回電是jqXHRtextStatus。不是data。見http://api.jquery.com/jQuery.ajax/的正確定義complete(jqXHR, textStatus)

+0

我應該將函數移至ajax成功嗎? – Adam

+0

我將功能移至成功,並使用user28061建議,它完美地工作,謝謝! – Adam