2009-08-28 4 views
0

これは以前の質問の続きです。私はオープンIDなしでその日にログインしていたので、そのアカウントにログインしてさらに編集する方法はわかりません。そこで私は新しいOpen ID対応のアカウントを作成し、これを新しい質問として投稿しました。変数の値は、j​​Queryのクリック機能から一度変更されます

私はこのようなコードを持っています。 onclickイベントの中で、値は$ selectedIdに正しく格納されます。しかし、私がURLにその値を渡そうとすると、私は正しい値を得られません。 forループの最後の値が渡されます。クリック機能のうち一度

<script type="text/javascript"> 

$(document).ready(function(){ 

<?php foreach ($Forms as $r): ?> 

    $("<li><a id='<?=$r['Form']['id'];?>' data-attr='Formentries' href='#'><?=$r['Form']['name']?></a></li>").appendTo("#headers").click(function() { 

    <?php $selectedFormId=$r['Form']['id'];?> 

    alert("selId: "+<?php echo $selectedFormId;?>); //here the selected id is alerted 
    }); 
alert("outside the loop"+<?php echo $selectedFormId;?>); //here the last value in the loop is alerted 
}); 

、$ selectedFormIdの値は、配列の最後の値に変更されます。誰かがこれで私を助けることができますか?

私が達成しようとしているのは、フォームのセットをリンクとしてリストし、リンクを選択するときにそのIDをphp変数に保存することです。私が合格できるようにだから私は、そこでのidをしたい私は

<a href="localhost/FormBuilder/reports/export/<?php echo $selectedFormId;?>" class="thickbox button" title= "Export" >Export</a> . 

別のリンクを介してフォーム内のエントリをエクスポートするオプションを持っているフォームを選択した後、それは特にPHP変数だってに保存されたいですコントローラ内のエクスポート機能に転送します。 私はまた

formid=$(this).attr("id"); 

としてjavascriptの変数に選択されたIDを取得するが、私は、コントローラ内のエクスポート機能にこの値を渡す方法がわかりません。

+4

この種のコードは、サーバーサイドコードとクライアントサイドコードを分離するのが正当な理由です。私はそれを読んで、javascriptとPHPが何であるかを伝えるのに苦労しています。 – scragar

+0

これで何をしようとしていますか?少なくとも私には明らかではありません... – stefita

+0

あなたは何を達成したいのですか? –

答えて

0

私が見る限り、繰り返しの各ループの中に$ selectedFormIdを設定しているので、割り当てイベントはクリックイベントが発生したときにのみ設定されます。

したがって、論理的にループを終了すると、$ selectedFormIdが配列の最後の項目になります。あなたは課題の周りに条件を置くことを意味していますか?サーバー側のコードは関係なく実行されることを忘れないでください!クライアントサイドの条件やクロージャは気にしません!

if (something){ 
    <?php $selectedFormId=$r['Form']['id'];?> 
} 

さらに、上記のコメントをエコーすると、実際にコードを分離しようとしているはずです。上記は本当にtag soupです!

0

私はあなたの質問をよく理解していますが、$ selectedFormIdの値がループ内に設定されているので、ループが実行されるたびに変数が設定され、ループが終了すると$ chosenFormIdが最後に処理されます値。私はあなたがループの外にそれを設定すべきだと思います。

+0

よく、私はループ内のid値を持っています.. –

0

ブロック内で宣言しているので、外部では使用できません。

ブロックの前に宣言するか、このブロック自体の内部でその使用を終了してください。

0

あなたはクライアント側とサーバー側のコードを混在させています - あなたが書いたコードは、クライアント側のJavaScript関数がサーバー側で魔法のようにPHP変数を設定すると思われるようです操作ができません。

クリックイベントがクライアント側で変数に設定されている必要があります。次に、エクスポートリンクにonclickを設定してURLを作成し、ローカルに保存された変数値に基づいてURLにリダイレクトします。

これはおそらく最適な解決策ではありませんが、1つの選択肢になります。

+0

URLを構築し、ローカルに格納されている変数値に基づいてそれにリダイレクトするためにあなたのエクスポートリンク上のonclickを設定します.--そのローカルで使用するjavascript変数私の輸出リンクのURLに?それは私がやろうとしていることです。 –

関連する問題