0

こんにちは、cakephp 2.2 アプリでの国の選択に従って、 Cities の動的ドロップダウンを生成したいと考えています。私は Cakephp にまったく慣れていません。さらに、ほとんどが 1.3 または 1.2 バージョン用であるため、チュートリアルはほとんど見つかりません。プロファイル追加ビューで国と都市のドロップダウン メニューを使用しています。ただし、これは国のコントローラーの私のコードです。

  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();
}

私は変更を試みましたが、差分の例では非常に異なる方法が見られるため、本当に混乱しています。そのリクエスト タイプを ajax としてチェックするかどうか、または request->data または params[url] を介してパラメータ値を取得する必要があるかどうかはわかりません。

これら2つの既存の回答に従いましたが、さらに混乱しました。 CakePHP は ajax でドロップダウン値を渡します CakePHP 2.2 で接続がリセットされる問題がありました

最初にページが読み込まれると、コンソールに「リソースの読み込みに失敗しました: サーバーは 500 (内部サーバー エラー) のステータスで応答しました」というエラーが表示されるというエラーは奇妙です。ただし、リロードをロードしてから、ドロップダウンで最初の値を選択すると。エラーが発生します

GET http://example.com/crush/countries/citylist?country_id=103 500 (内部サーバー エラー) jQuery.ajaxTransport.sendjquery-1.7.2.js:8240 jQuery.extend.ajaxjquery-1.7.2.js:7719 jQuery.each.jQuery.(匿名関数)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

さらに何をすべきかわからない。

4

1 に答える 1

0

動的なドロップダウン ボックスが含まれるあなたのようなケースでは、ajax() jQuery のメソッドを使用してデータを取得し、select要素のコンテンツ全体を置き換えます。したがって、AJAX 呼び出しで JSON データを返す代わりに、完全な HTMLoption要素を返し、要素のコンテンツselect$('myselectelement').html(data). これはうまくいきます。

于 2012-08-17T13:19:30.947 に答える