2012-09-23 2 views
0

데이터베이스에 새 환자를 추가하고 json 데이터를 다시 얻은 다음 새 환자를 선택 메뉴에 추가하는 기능이 있습니다. 그건 잘 작동합니다. 해당 데이터를 해당 텍스트 입력에 추가해야합니다. 즉, input # patient_id, input # patient_firstname 등은 .ajax 완료시 발생해야하지만 아무 일도 일어나지 않습니다.json 데이터를 텍스트 입력에 삽입하십시오.

도움을 주시면 감사하겠습니다.

아약스

$('#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 있습니다. 데이터가 아닙니다. complete 통화에 대해 전체의 정확한 정의에 대한 http://api.jquery.com/jQuery.ajax/ (jqXHR, textStatus)

+0

의 올바른 정의는 http://api.jquery.com/jQuery.ajax/을 참조하십시오.이 기능이 작동해야하는 이유는 알지만 텍스트 입력에는 값이 표시되지 않습니다. 이견있는 사람? – Adam

+0

@ user28061 완벽하게 작동합니다! 나는 또한 함수를 아약스 성공으로 옮겨야했다. 고마워요. 정말 고맙습니다. – Adam

1

params 객체를 파라미터를 참조 다시 jqXHRtextStatus 있습니다. 아니 data. complete(jqXHR, textStatus)

+0

함수를 아약스 성공으로 옮겨야할까요? – Adam

+0

나는 성공으로 함수를 옮기고 user28061 제안을 사용했으며 완벽하게 작동합니다. 감사합니다 !!! – Adam

관련 문제