Ajax通信以外で、JavaScriptからPHPへ変数(配列)を渡したいのですが、
可能でしょうか?
下記のような状態の時、js変数dataを、Ajax通信を利用せずにPHP変数として取得したいのですが、どうすればよいでしょうか?
JavaScript関数の中で、PHPフォームの送信ボタンをクリックさせる(ような)ことは出来ないのでしょうか?
<button type="button" onclick="testsubmit();">送信</button>
<script>
function testsubmit(){
js処理;
var data = ★★;
}
</script>
■最終的にやりたいこと
・ボタンをクリックしたら、js処理で取得したjs変数(配列)を、Ajax通信を利用せずに、PHP変数として受け取りたい
・それを出来れば1クリックで処理したい
No.1ベストアンサー
- 回答日時:
ボタンを押した後に画面が遷移していいのであれば
<button type="button" onclick="testsubmit();">送信</button>
<form action="xxx.php" method="post" name="jsform">
<input type="hidden" name="hoge" id="hoge" value="">
</form>
<script>
function testsubmit(){
js処理;
var data = ★★;
document.getElementById('hoge').value = data;
document.jsform.submit();
}
</script>
回答ありがとうございました。
>document.getElementById('hoge').value = data;
>document.jsform.submit();
取得して、送信できるんですね。
大変参考になりましたー
No.4
- 回答日時:
ANo3です。
私もよくわかってませんが、わかる範囲で・・・。
後は、他の方が訂正してくれるでしょう。
>1.scriptタグで、jsファイルではなく、phpファイルを指定しても良いのでしょうか
通常はjsファイルですが、phpなどでもかまいません。
sucriptタグの場合は、phpがスクリプトを返せばそのまま動作します。
imgタグの場合は、画像データを返せばそれが表示されます。
>2.使い方としては、location.href = url;で、遷移(もしくは更新?)させ
送信するのみという条件だと解釈しています。それなので、遷移は必要ありません。
遷移するのであれば、遷移先のuriを指定し(例えばhoge.php)、遷移先がソースをブラウザに返さないと表示できません。ご質問文では一方向の送信のみで、phpは送信を行はないのだと思いました。
(ANo2様の回答にその旨の確認が書いてあるかと思います)
使い方としては
function fuga(){
~~~
}
とでもしておいて、呼び出すだけです。
実際には、phpに渡すデータは状況によって変わるのでしょうから、その内容を引数にしておく必要がありますね。
>3.imgタグのsrcでなぜこのような(URLパラメータとして付与する)ことが可能なのでしょうか?
uriの仕様がそうなっているからです。
今回の場合は、送信先がphpなので、php側でパラメータとして読取れば、送信したことにできるということを利用しています。
ブラウザは画像データをリクエストしたつもりでいるはずですが…
>2.new Image();は何をしているのでしょうか?
イメージオブジェクトを生成しています。
document.createElement("img") と同等だと思います。
>このオブジェクト(?)の有効期間はブラウザを閉じるまで、ぐらいなのでしょうか?
上記で紹介したように、function fuga(){ ~~内で用いれば、その関数内の変数は関数の実行範囲内でのみ有効となりますので処理が終われば開放されるというしくみです。
(グローバル環境でオブジェクトを生成するとちょっと違ってきます)
ANo2様の回答と少し違うのはこの点で、ドキュメントに追加していないので何度関数を呼び出してもドキュメントは変わらないということになります。
まあ、No2様のようにscript要素を追加したとしても、どうということもないという意味では同じですが。
>3.new Image();で作成した「img」はDOMとは違うのでしょうか?
すみません。専門家ではないので、言葉遣いがよくわかっていませんです。
勝手な解釈では(正しいところはわかりません)、DOM要素ではあるものの、ドキュメントに追加はされていないということなのかも。
それなので、前述のように関数が終了した時点で開放されると思います。
もしかすると、画像データのレスポンスを待ち続けるのかも知れませんが、一定時間が過ぎれば打切られるはず。(画像のリンク切れと同じような処理になるかと)
回答ありがとうございました。
回答いただいた内容は、今回自分が知りたかったことに一番近かったわけではないのですが、
こういう使い方もできるんだ、と思うところがあり、大変参考になりましたー
No.3
- 回答日時:
ANo2様と同じ発想ですが…
var url= "hoge.php?a=aaa&b=bbb";
var img = new Image();
img.src = url;
ドキュメントを変えないので、関数にしておけば何度呼び出してもDOMに影響しません。
この回答への補足
回答ありがとうございました。
おかげでやりたいことは実現できたのですが、分からないことがあるので、教えていただけないでしょうか?
1.No2さんの補足に書いた、「2」「3」の件
2.new Image();は何をしているのでしょうか? JavaScriptにImageクラスみたいなのがあって、それのインスタンスオブジェクトを作成しているような感じなのでしょうか? 試しに「location.href」させてもimgは利用できたのですが、このオブジェクト(?)の有効期間はブラウザを閉じるまで、ぐらいなのでしょうか?
3.new Image();で作成した「img」はDOMとは違うのでしょうか?
No.2
- 回答日時:
PHP側で受け取るだけで良いのですよね(結果のデータは返さない)
var url= "hoge.php?a=aaa&b=bbb";
var s= document.createElement("script");
s.setAttribute("type","text/javascript");
s.setAttribute("src",url);
s.setAttribute("charset","UTF-8");
document.body.appendChild(s);
これでPHP側でデータを受け取れます。
この回答への補足
回答ありがとうございました。
おかげでやりたいことは実現できたのですが、分からないことがあるので、教えていただけないでしょうか?
1.scriptタグで、jsファイルではなく、phpファイルを指定しても良いのでしょうか?
<script type="text/javascript" src="hoge.php.php?a=aaa&b=bbb" charset="UTF-8"></script>
2.使い方としては、location.href = url;で、遷移(もしくは更新?)させ、$_GET["a"];で取得する感じでしょうか? location.hrefさせずに、取得する方法はあるでしょうか?
3.imgタグのsrcでなぜこのような(URLパラメータとして付与する)ことが可能なのでしょうか? そういう仕様だから? imgタグsrcの読み込まれる要件とかって、何かあるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP処理実行後のページの遷移に...
-
csvファイルを読み込み、該当項...
-
VBAによる第3、4水準文字の判定...
-
VB.NET2003 テキストボックスに...
-
JavaScriptで、実行するたび値...
-
正整数の半角数字かどうか判定する
-
PDFフォームで条件つき金額を表...
-
Node.jsのWebプログラム(javasc...
-
列を非表示にするマクロが実行...
-
サブウインドウをフルスクリー...
-
if(1){...}とはどういうことで...
-
正規表現での入力文字数と連続...
-
JSPの処理の途中で、JavaScript...
-
〔Excel:VBA〕マクロの実行が異...
-
リンクを右クリックするとペー...
-
VBScript から JavaScript を呼...
-
ページを一回だけリロードさせ...
-
ブラウザからエクセルを開く方法
-
VBA 多次元配列のクイックソー...
-
ページ遷移時にアコーディオン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
助けてください!スパムメール...
-
PHP処理実行後のページの遷移に...
-
javascript中の記述でのJSP文<%%>
-
Onclickイベントでデータをcgi...
-
指定した日時にリロード処理を...
-
親フォームとサブフォームでの...
-
javascript 「戻る」を押したと...
-
javascriptからpythonへ値の受...
-
submitした後にiframeのページ...
-
画面遷移を無くすためajaxでメ...
-
Ajax以外で、JavaScriptからPHP...
-
javascript と php の、フォー...
-
画面遷移させずにCGIの戻り値を...
-
「戻る」ボタン使用時のフォー...
-
javascriptからPHPに変数を渡し...
-
連動プルダウンについてです。
-
ボタンに複数機能を持たせられ...
-
以下のコードを実行しても、オ...
-
Javascriptエラーの原因が分か...
-
JSPの処理の途中で、JavaScript...
おすすめ情報