1

ユーザーが URL を入力できる入力フィールド「#PostTitle」があります。

配列を返す Posts コントローラーのアクションに、ユーザーの入力 (変更時またはフィールドの終了時) を送信したいと考えています。CakePHP がなければ、これは次のようになると思います。

$(document).ready(function(){
 $('#PostTitle').change(function(){
    $.ajax({
           type: 'POST',
           url: '/posts/setPostImages',  
           data: $(this).serialize(),
           success: function(data){
                do something;
           },
           error: function(message){
                console.debug(message);
           }
      });
 return false;
 });
});

Posts コントローラーのアクションは、$imageArray という名前のリンクの配列を設定します (ページを CURL して、そのページ上のすべての画像の配列を返します)。

次に、リクエストを行った後、その配列の内容に依存する要素を更新したいと思います。要素には次のコードが含まれます。

<div id="slider-wrap" class="boxframe">
    <div class="coda-slider" id="slider-id">
     <?php foreach ($imageArray as $image): ?>
        <div class="crop">
        <?php echo $this->Html->image($image); ?>
        </div>
    <?php endforeach; ?>
    </div>
</div>

どんな助けでも大歓迎です!

編集:これを試してみると、アクションはまったく呼び出されません:

echo $this->Js->link('update',
      array('action' => 'setPostImages'),
      array(
         'update' => '#selectImage',
         'data' => 'www.stackoverflow.com',
         'async' => true,    
         'dataExpression'=>true,
         'method' => 'POST'
      )
   );
4

1 に答える 1

0

この JS を CakePHP で生成する場合は、JsHelper のイベント メソッドリクエスト メソッドを参照してください。

POST リクエストがヒットするアクションは、要素をレンダリングし、HTML で応答する必要があります。JsHelper::request は、updateparam で指定された要素のコンテンツを HTML に置き換えます。

個人的には、PHP フレームワークで Javascript を生成するのはかなり難しいと思います。やりたいことがすぐに難しくなります。Javascript を少しでも使用している場合は、直接記述することをお勧めします (これを行う方法はすでにご存知のようです!)。

あなたの編集は、おそらく別の問題を参照しています。そのスニペットによって生成されたリンクをクリックすると、ブラウザのコンソールにどのような Javascript エラーが表示されますか?

于 2012-11-08T02:02:12.770 に答える