私はcfhttpタグを見ていました。クリックしたリンクから変数を渡すことは可能ですか?cfhttpクリックされたリンクを介してPOST変数を渡す?
<cfhttp method="Post" url="myurl">
私は(例えば、ユーザID)リンククリックで変数を渡すためにしようとしていますが、GET経由で送信するために少し不安定なようだ...
私はcfhttpタグを見ていました。クリックしたリンクから変数を渡すことは可能ですか?cfhttpクリックされたリンクを介してPOST変数を渡す?
<cfhttp method="Post" url="myurl">
私は(例えば、ユーザID)リンククリックで変数を渡すためにしようとしていますが、GET経由で送信するために少し不安定なようだ...
私のオリジナルの答えは完全にマークを逃しました、私は受け入れられた答えを削除することはできないので、わかりやすくするために、上記のBillyのコメントに同意するようにこの回答を変更しています。
CFHTTPは、別のWebサイトに(自分がサイトに行ったかのように)サーバー側の要求を作成し、その要求の結果を処理し、変数に格納してから使用することができます(例えば、特定の値のためにウェブサイトのホームページを解析すること)に対する追加のタスク。
何を求めていることはここで、機能性の全く関係のない作品のように見える:
これを実現する最も簡単な方法は、隠しフォームを使用し、ハイパーリンク送信フォームを作成することです。これは、あなたの質問のコメントでビリーの提案に一致します。
<form name="myForm" method="post" action="pageToSendVarsTo.cfm">
<input type="hidden" name="username" value="theuser" />
<input type="hidden" name="id" value="42" />
</form>
<a href="#" onClick="document.myForm.submit();">the link to click</a>
をここで、あなたは彼らが隠されているように、ページ上に表示されない2つの隠しフィールド、ユーザ名とidを持つHTMLフォームを持っている(ただし、注意してください、ユーザーがページのソースを表示しても表示されます)。次に、「クリックするリンク」がユーザーへのハイパーリンクとして表示されます。クリックすると、フォーム提出の発射をシミュレートするためにJavaScriptが使用されます。あたかもフォームに送信ボタンがあり、ユーザーがその送信ボタンをクリックしたかのように動作します。つまり、この例のフォームでは、ユーザ名とIDの両方の値が、 'pageToSendVarsTo.cfm'ページにHTTP POSTされ、FORMスコープで処理が続行できるようになります。
セキュリティチップをありがとう(私はそれが私の質問の他の部分だと思います!) – redconservatory
このコードを取得するには、@redconservatoryが回避しようとしていたGETを実行する必要があります。さらに、サーバー上で2回の通話を行っています。 –
私は急いで質問を誤解しました。あなたは正しい - OPは、まず最初にcfhttpで始まる間違ったルートに行きました。この私の答えは間違った経路を指しています。 –
POSTを実行するために変数をCFに送り返す必要がない場合は、JavaScriptマジックでこれを行うこともできます。たとえば:
<script>
$(function() {
$(document).on('click', 'a.postLink', function (e) {
e.preventDefault();
var newForm = $("<form method='POST'></form>");
if ($(this).attr('href').indexOf('?') != -1)
{
newForm.attr("method", $(this).attr('href').substring(0, $(this).attr('href').indexOf('?')));
var post_args = $(this).attr('href').substring($(this).attr('href').indexOf('?')+1, $(this).attr('href').length).split('&');
for (var i in post_args)
{
var keyVal = post_args[i].split('=');
newForm.append($("<input>", { type: "hidden", name:keyVal[0], value:keyVal[1] }));
}
}
else
{
newForm.attr("method", $(this).attr('href'));
}
console.log(newForm);
newForm.submit();
});
});
</script>
これは、通常の処理を停止します。
<a class="postLink" href="foo.cfm?var1=a&var2=b">Click Me</a>
さて、あなたはPOST変数(想定してjQueryの)としてVAR1とVAR2を渡し、POSTとしてfoo.cfmを要求したいと言います「postLink」クラスでタグ付けされたすべてのリンクは、そのページに行く代わりに、フォームパラメータとして含まれるリンクURLから解析されたパラメータで新しいフォームオブジェクトを構築します。次に、スクリプトが指し示すのと同じベースhrefにPOSTを使用してそのフォームを送信します。 http://jsfiddle.net/VGaPH/
CFHTTPを使用する場合、HTTPリクエストはユーザーのブラウザからではなくColdFusionサーバーから取得されることに注意してください。それは違いを生むことができます。 – ale
GETリクエストで変数を見るのが簡単であるという事実以外は、GETによるPOSTに関して本質的により安全なものは何もありません。 –
私はちょっと単純なmy linkがあなたの目標を達成するとき、これらの答えのいくつかによって少し混乱しています。(URLに合格するにはあまりにも敏感であれば、それは形式ではありません) –