0

クリックされた要素のIDをキャプチャし、そのIDをコントローラーに渡します。すべて、リンクまたはURLパラメーターにIDを表示せず、カスタムajaxロードを作成する必要もありません。箱から出してレールで利用できるようなものはありますか?

4

2 に答える 2

1

IDをユーザーに表示したくないと想定していますが、サーバーにアクセスするには要素IDが必要です。

カスタムリクエストヘッダーを使用することもできますが、それにはAJAXアプローチが必要になります。これがJQueryのスケッチです

$("a.sends_element_id").click(function(e){
  e.preventDefault();
  $.ajax({
     url: $(e.target).attr("href"),
     type: "GET",
     beforeSend: function(xhr){xhr.setRequestHeader('X-Element-ID', $(e.target).attr("id");},
     success: function(result) { 
       // Do something here to display the page
       // Eg. http://stackoverflow.com/questions/824349/modify-the-url-without-reloading-the-page
     }
  });
于 2013-01-19T10:24:43.193 に答える
1

何を達成しようとしていますか(最終目標は何ですか)?ユーザーのURLでajaxを使用したり、パラメーターをエンコードしたりせずに、クライアントとサーバー間で通信したいようです。

これらの制約がある場合の通常の方法は次のとおりです。

1)クリックターゲットをフォームにラップし、IDを非表示の値に設定します。クリックしたら、フォームを投稿してください。これにはページの更新が必要になりますが、これはPOSTであるため、URLを台無しにすることはありません。

2)CookieにIDを設定し、ページを強制的に更新し、サーバーでIDを読み取り、設定を解除します。これには明らかにページの更新も必要ですが、URLには何もエンコードされません。

3)非表示のiFrameを使用して、目的のパラメータを含むURLをロードします。これは更新を必要とせず、ユーザーには表示されないため、URLは何でもかまいません。

ページの更新/変更に問題がない場合は、フォームルートがおそらく最適です。ただし、ページを更新したくない場合は、xhrリクエストが明らかに最善の解決策です。実行するのは本当に簡単ですが、iFrameソリューションはおそらくあなたのニーズも満たすハックでしょう。

于 2013-01-19T20:08:57.643 に答える