
下記form内のsubmitボタンをクリックしたとき以下の条件を満たしたいです。
(1) actionで外部リンクを新規タブで開く
(2) 同時にregist.phpへパラメータ(kanryo=0)を持たせて遷移
========================================
【head内】
<script>
jQuery(document).on("click", '#viewing', function() {
$.get("regist.php", {
kanryo: "0"
}, function(data) {});
});
</script>
【body】
<form action="外部リンクURL" method="POST" target="_blank">
<input type="hidden" name="SAMLResponse" value="<?=$samlresponse ?>" />
<input type="submit" value="動画を視聴する" id="viewing">
</form>
========================================
■問題点
(1) でPOST送信できており遷移するが、(2) の遷移が何の変化もなくできていない。
JavaScript での飛ばし方が問題があるのかと思ったのですが、
他者が以前書いた記述であるのと、JavaScriptについてほぼ無知なので原因がわかりません。
このJavascript の記述でregist.phpへ遷移はできるはずなのでしょうか?
問題ないのであれば、それ以外の部分でおかしいところを検証します。
別内容になりますが、飛ばしたいパラメータを2にしたい場合は
このJavascript の記述はどしたら良いでしょうか?
前提知識が少ないため、調べても判断ができず、申し訳ありません。
どうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
No1です
>"regist.phpundefined"と、404エラーに
404はFile Not Foundです。
要は、リクエスト先が見つからないということになります。
setTimoutの処理では、一旦、イベント関数から解放されているので、this値は(多分)windowになっているものと想像します。
この結果、this.idはundefinedとなっていて、遷移先のlocationとして「regist.phpundefined」を指定してることになっているものと思います。
this値ではなく、一旦、変数に代入しておけば、参照可能になります。
例えば、
$(".viewing").click(function() {
const url = "regist.php" + this.id;
setTimeout(function(){ location.href = url; }, 2*1000);
});
とするなど。
※ 時間差はブラウザにsubmit処理を行わせるためだけなので、2秒もなくても良いのではと思います。
一旦、変数に代入する方法でうまく値を飛ばすことができました!
おそらく初歩的なことだったとは思いますが、
丁寧に教えてくださり、本当にありがとうございました!!
時間も500にしてみました。
No.1
- 回答日時:
こんばんは
>(2) の遷移が何の変化もなくできていない。
$.get()はajaxのメソッドです。ですのでページ遷移は発生しません。
https://api.jquery.com/jQuery.get/
regist.phpが何を返しているのか不明ですけれど、戻り値のdataを利用してHTMLを書き換えるか、あるいは、単に遷移をするだけなら、location.hrefを上書きする方法の方が簡単です。
https://developer.mozilla.org/ja/docs/Web/API/Lo …
ただし、ブラウザのsubmit動作前に遷移してしまうと、submitが行われなくなる可能性がありますので、setTimeout等で時間差を作る必要がありそうに思います。
(ajaxの場合は、遷移が起きないのでそのような必要はありません)
>飛ばしたいパラメータを2にしたい場合は~
どのパラメータのことかわかりませんが・・・
「SAMLResponse」であるなら、出力時にその値をセットしておいてください。
「kanryo」の場合なら、スクリプトを書き直すか、現状の固定値を変数にしておいて可変にするなど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
検索画面→結果画面→検索画面と...
-
location.hrefでページ切替時の...
-
ホームページビルダーが遅い!...
-
VBS/HTA:画面のサイズを取得す...
-
window.open()使用サブウィンド...
-
テキストボックスから勝手に画...
-
ruby on railsでの画面間 パラ...
-
登録後、呼び出し元ページに戻...
-
Struts1.3.10でAjax連携
-
要素が画面内に表示されている...
-
三菱GOTの画面切り替えについて
-
スクリップト
-
腕時計の時報をならないように...
-
このadidasの腕時計の時刻の設...
-
「<c:forEach タグが終了し...
-
Formのデータが欠落することがある
-
データグリッドでの日本語入力方法
-
漏電遮断器の黄色ボタンと白色...
-
jspからjarを参照したいのですが
-
JSFでJavaScriptを使用するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java-jspの画面入力値保持について
-
三菱GOTの画面切り替えについて
-
ServletからServletへの値渡し
-
セッション切れでのリクエスト...
-
C言語で今まで表示していた画面...
-
ServletからHTMLページへの遷移...
-
java初心者です。 画面Aで情報...
-
Javaプログラミングの質問にな...
-
登録後、呼び出し元ページに戻...
-
system("cls")について
-
【swing】ボタンクリックにより...
-
コンボボックスの値が画面移動...
-
遷移元を判定したい!
-
C# ログイン画面からメイン画面...
-
peek()の機能が使えれば・・・
-
ASP.NET 画面遷移前の状態を保...
-
Sessionがnullになりません。
-
ブラウザアドレスバーからのURL...
-
画面を隠す・消す方法を教えて...
-
検索画面→結果画面→検索画面と...
おすすめ情報
loactionで遷移挙動はできました!が2つのパラメータが変なのかURL末尾が"regist.phpundefined"と、404エラーに…。
<?php $PARAMETER = "?kanryo=".$KANRYO."&id=".$ID; ?>
<form action="リンク" method="POST" target="_blank">
<input type="submit" value="動画を視聴する" class="viewing" id="<?=$PARAMETER;?>">
<script>
$(".viewing").click(function() {
setTimeout(function(){
location.href = "regist.php" + this.id;
}, 2*1000);
});
</script>
</form>