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ランキング
-
JavaScriptで月に対して日の整...
-
JSPの処理の途中で、JavaScript...
-
gas 全角数字を半角数字に変換
-
JavaScriptで ブラウザの閉じる...
-
VB.NET2003 テキストボックスに...
-
PowerPointで時計表示
-
C#でボタン名を変更しても動く
-
htmlのfileタグに自動で値を入...
-
フォルダを自動で開く
-
禁止文字チェック
-
if(1){...}とはどういうことで...
-
正規表現について
-
【JavaScript】ソースのコメン...
-
ウインドウがアクティブか調べ...
-
PDFフォームで条件つき金額を表...
-
VBAマクロ、パスがありませんで...
-
javascript:void(0)とは何でし...
-
javascript で外部サイトにデー...
-
ホームページビルダーでスクリ...
-
正整数の半角数字かどうか判定する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP処理実行後のページの遷移に...
-
Ajax以外で、JavaScriptからPHP...
-
現在日付を初期値にするには
-
「戻る」ボタン使用時のフォー...
-
javascript中の記述でのJSP文<%%>
-
Onclickイベントでデータをcgi...
-
javascriptからpythonへ値の受...
-
javascript・JSP関連
-
指定した日時にリロード処理を...
-
画面遷移させずにCGIの戻り値を...
-
submitした後にiframeのページ...
-
jQueryMobileについて
-
必要時だけ必須記入にする方法
-
JSPの処理の途中で、JavaScript...
-
Vba SelStart、SelLen教えてく...
-
VB.NET2003 テキストボックスに...
-
「終了していない文字列型の定...
-
JavaScriptで ブラウザの閉じる...
-
ASP(VBS) ←→ JavaScript の変数...
-
正整数の半角数字かどうか判定する
おすすめ情報