2

私の問題は本当に簡単です。

次のようなリンクがたくさんあります:

$this->Html->link(__('Calculer'), 'log_import/'.$suivi['Suivi']['date'], array('class' => 'logImport')

ご覧のとおり、「a」タグの href 属性はリンクごとに変更されます (「2012-01-01」、「2012-10-15」などの日付の種類)。

リンクをクリックすると、jquery コードが実行されます。

$this->Js
    ->get('.logImport')
    ->event('click',
        $this->Js->request(
          array('action' => '$(this).attr("href")'),
          array('async' => true,
                'update' => '#test')
          ));

そして、ajax リクエストで使用される URL は次のとおりであるため、エラーが発生します。

/suivis/$(this).attr("href")

ではない:

/suivis/log_import/2012-01-01
4

2 に答える 2

0

はい、最後に、JS Helper バッファーで「純粋な」jquery コードを使用しました。

これは私のコードです ( $(this).attr を直接使用して、各ループをバイパスできます ;-)

$this->Js->buffer('
  $(".logImport").click(function(event) {
    event.preventDefault();
    $.ajax({
        url: $(this).attr("href"),
        })
        .done(function(){
          alert("OK");
          })
        .fail(function(){
          alert("FAILED");
          });

    });
');

ちなみに、誰かが知っていれば、私はまだ答えに興味があります....

于 2012-11-23T15:16:13.450 に答える
0

私はこれがうまくいくとは思わない:

array('action' => '$(this).attr("href")')

値は文字列として扱われているようです。

私の提案は、生のjqueryコードを使用することです:

$('.logImport',this.DOMDoc).each(
  function(index, object){

    var href = $(this).get(0).href;
    $(this).get(0).href = "javascript:void(0);"

    // attach click function for each link
    $(this).click(function() {

        // make request here            
        $.ajax({
            type: "post",
            url: href,
            ...
        })

    });
  }
);
于 2012-11-23T14:17:30.350 に答える