2012-08-17 7 views
0

안녕하세요 모두 cakephp 2.2 앱에서 국가 선택에 따라 도시에 대한 동적 드롭 다운을 생성하려고합니다. 나는 cakephp에 아주 새롭다. 또한 나는 거의 1.3이나 1.2 버전을위한 튜토리얼을 거의 찾지 못한다. 프로필 추가보기에서 국가 및 도시에 대한 메뉴를 드롭 다운하는 중입니다. 여기에 비록 국가 컨트롤러에 내 코드입니다 :cakephp 및 Jquery로 동적 드롭 다운

public function citylist() { 
     $this->layout=false; 
     Configure::write('debug', 0); 
     if($this->request->is('ajax')){  
     $country=$this->Country->read(null, $this->request['url']['country_id']); 
     $code=$country['Country']['country_code']; 
     $cities=$this->Country->City->find('list',array('conditions' =>array('City.country_code' => $code),'recursive' => -1,'fields' => array('id', 'name'))); 
     $this->set('cities',$cities); 
}} 

는 내 jQuery 코드는 이것이다 :

$(document).ready(function(){ 
$('#ProfileCountryId').live('change', function() { 
if($(this).val().length != 0) { 
    $.getJSON('/crush/countries/citylist', 
       {country_id: $(this).val()}, 
       function(cities) { 
       if(cities !== null) { 
        populateCityList(cities); 
       } 
    }); 
    } 
}); 
}); 

     function populateCityList(cities) { 
var options = ''; 

$.each(cities, function(index, city) { 
options += '<option value="' + index + '">' + city + '</option>'; 
}); 
$('#ProfileHomeLocation').html(options); 
$('#city-list').show(); 
} 

내가 변경을 시도했지만 정말 혼란 DIFF 예에서와 같이 내가 매우 사랑하는 방법을 참조하십시오. 요청 유형을 ajax로 확인하는 것이 확실하지 않거나 request-> data 또는 params [url]를 통해 매개 변수 값을 가져와야합니다.

나는이 두 가지 기존 답변을 따르고 더 혼란 스럽습니다. cakephp pass dropdown value in ajax The connection was reset issue in CakePHP 2.2.

처음 페이지를로드 할 때 "리소스를로드하지 못했습니다 : 서버가 500 (내부 서버 오류)의 상태로 응답했습니다"오류 메시지가 표시되는 것이 이상합니다. 그러나 다시로드 한 다음 드롭 다운에서 첫 번째 값을 선택하십시오. 8240 jQuery.extend.ajaxjquery-1.7.2.js : 7719 jQuery.each.jQuery 그것은 오류

저에게 (내부 서버 오류) jQuery.ajaxTransport.sendjquery-1.7.2.js를 제공합니다 (익명 함수) jquery-1.7.2.js : 7245 jQuery.extend.getJSONjquery-1.7.2.js : 7262 (익명 함수) citylist.js : 4 jQuery.event.dispatchjquery-1.7.2.js : 3332 jQuery.event.add.elemData.handle.eventHandle

더 이상 알지 못합니다.

답변

0

동적 드롭 다운 상자가있는 사용자의 경우 ajax() jQuery의 메서드를 사용하여 데이터를 검색하고 select 요소의 전체 콘텐츠를 바꿉니다. 따라서 AJAX 호출을 통해 JSON 데이터를 반환하는 대신 전체 HTML option 요소를 반환하고 select 요소의 콘텐츠를 $('myselectelement').html(data)으로 바꿀 수 있습니다. 이것은 잘 작동합니다.

+0

그래서 ""'; " 컨트롤러 안에 넣고 배열보다 최종 문자열을 설정하십시오 !! cakephp 2.x 예문에 대해 exapmle을 줄 수 있거나 링크를 줄 수 있다면 좋을 것입니다. –

+0

CakePHP에만 해당 될 필요는 없습니다. 일부 코드는'$ .ajax ({url : 'myurl', data : {...}}). done (function (data) {$ ('mySelectElementId') .html (data);});' myurl은 생성하는 CakePHP의 컨트롤러 액션이어야하며'return $ myHTMLOutput; 대신'echo $ myHTMLOutput; '을 사용하여 html 출력 (실제로는 문자열)을 반환해야합니다. –

+0

실제로 문제는 매개 변수 값 전달과 관련이 있습니다. 나는 케이크의 2.2 버전에 대한 변경된 방법을 사용하여 노력하고, 잘 작동. 비록 내가 당신의 대답을 받아들이고 있지만, 그것은 나에게 아이디어를 준 것처럼, 단일 문자열을 전달하고, 따라서 Jquery 함수가 잘 작동하는 것을 알 수있었습니다. –