私は数日間この問題に取り組んできました。私はCakePHP 2.0で単純なajax呼び出しを実装しようとしています。これは、別の選択リストの選択に基づいて選択リストを設定します。私のデータベースでは、私は車両メーカーと車両モデルを持っています。モデルにはmake_idフィールドがあります。ユーザーがmakeを選択すると、前に選択したmake_idを持つモデルだけがモデル選択リストに入力されます。 Firebugでリクエストを見ると、make_idに関係なくすべてのモデルが返送されます。私は、この小さなチュートリアルでは、選択に基づいてセレクトする方法を説明しようとしましたが、まだ運がないと分かりました。ここでhttp://bakery.cakephp.org/articles/Calderoy/2011/01/18/how_to_create_an_observefield_equivalent_in_the_new_jshelpercakephp jshelper chained select
は私のビューファイルで見つかった、私のJsHelperコードです:
$this->Js->get('#CarMakeId')->event(
'change',
$this->Js->request(
array('controller' => 'CarModels', 'action' => 'get_model'),
array(
'async' => true,
'update' => '#CarCarModelId',
'dataExpression' => true,
'method' => 'post',
'data' => $this->Js->serializeForm(array('isForm' => true, 'inline' => true))
)
)
);
そして、ここでは私のコントローラのメソッドです:
: は最後に、ここに私のget_modelビューファイルがあります
if($car_models) {
echo "<option value=''>-- Select --</option>\n";
foreach($car_models as $model) {
echo "<option value=".$model['CarModel']['id'].">".$model['CarModel']['name']."</option>\n";
}
}
これはJsHelperを介して作成されたJavaScriptです:
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {$("#CarMakeId").bind("change", function (event) {$.ajax({async:true, data:$("#CarMakeId").serialize(), dataType:"html", success:function (data, textStatus) {$("#CarCarModelId").html(data);}, type:"post", url:"\/Dropbox\/CartrackerV3\/CarModels\/get_model"});
return false;});});
//]]>
私は私のコントローラでのRequestHandlerヘルパーが含まれています。私はajax呼び出しからの応答を得ていることに注目する価値があります。メイクを選択した後、モデルの最初のオプションは、空白のオプションからget_modelビューファイルから来る - 選択 - オプションに変わりますが、データベース内のすべてのモデルをリストしています。正しいmake_id。 OPによるコメントパー
おっと、問題を発見しました!この問題はコントローラのget_modelメソッドの構文でした。電話番号を変更しました $ models = $ this-> CarModel-> find( 'all'、 array( 'conditions'、 array( 'CarModel.make_id' => $ this-> data ['Car '] [' make_id ']) ) ); To $ models = $ this-> CarModel-> find( 'all'、array( '条件' =>配列( 'CarModel.make_id' => $ this-> data ['Car'] ['make_id ']) ) ); 条件の違いに注目してください。私は=の代わりにコンマを持っていました。すべては今働いている。 – Stewie
$ this-> Js-> requestのデータパラメータで複数の値を渡す手助けをしてください。私は2番目の選択ボックスの値をajaxリクエストに投稿して、3番目の選択ボックスを設定したいと考えています。助けてください。 –