質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

5401閲覧

ajaxでサーバーにformデータを送信したい

souta-haruran

総合スコア88

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/03/07 02:32

編集2017/03/07 03:09

###前提・実現したいこと
ajaxでサーバーサイドにformデータを送信したいです。

###実装の抜粋ソースコード

javascript

1var requestUrl = 'sample.php'; 2var $form = $('#form') 3$.ajax({ 4 url: requestUrl, 5 timeout: 10000, 6 data: $form.serialize(), 7 done: function() {...}, 8 fail: function() {...} 9})

html

1<form action='hoge' id="form"> 2 <input type="text"> 3 ~~ 4</form>

###確認したこと
chromeの開発者ツール内、Networkタブで確認したところ、Request URLにはajaxurlの値とdataで設定した$(form).serialize()の値が連結された形で確認できました。

これは私がやろうとしている、『サーバーにformデータを送る』ということが実現できている。

簡単に言うと、この書き方で合っているのでしょうか?

すみませんが、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2017/03/07 02:52

ローカル側で送信したことは確認できますが、届いたかどうかはサーバ側でしか分からないのでは。もちろん、サーバでレスポンスを返せば間接的に分かると思いますが。
souta-haruran

2017/03/07 02:58

ご回答ありがとうございます。なるほど、やはり開発者ツールなどで分かるという事でないんですね。
Lhankor_Mhy

2017/03/07 03:02

繰り返しになりますが、「送れたかどうか」は確認できますし、リクエストを飛ばしているのでなんらかの応答も帰ってきているはずです。たとえばwebAPIへの送信確認ならそれで十分です。
souta-haruran

2017/03/07 03:23

何度もありがとうございます、仰っていること理解できました。ちなみに今回のケースで例えると、本件のようにサーバーにformデータを送りたい場合などのコードの書き方というのは、抜粋ソースコードに書いたような書き方で合ってるものでしょうか?
Lhankor_Mhy

2017/03/07 06:33 編集

問題ありません。http://api.jquery.com/jQuery.ajax/ を見ますと、dataは`PlainObject or String or Array`となっており、Stringの場合はクエリストリングに解釈する、となっています。 一方で、http://api.jquery.com/serialize/ を見ると、serialize()はクエリストリングを返すことになっていますから、問題ないことになります。
souta-haruran

2017/03/07 10:14

ご丁寧にご回答いただきありがとうございました。大変助かりましたし勉強になりました。
guest

回答1

0

ベストアンサー

data: $form.serialize(),
↓↓↓
data:new FormData($('#form').get(0))

としてはいかがでしょうか?

投稿2017/03/07 05:54

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

souta-haruran

2017/03/07 09:45 編集

ご回答ありがとうございます。 可能であればお伺いしたいのですが、 ━━━━━━━ data: $form.serialize(), ━━━━━━━ と ━━━━━━━ data:new FormData($('#form').get(0)) ━━━━━━━ の違いと言いますか、ご提案いただいた記述方法のメリットを伺えればと思います。 よろしくお願いします。 ※調べてみたのですが、記述方法は掲載されていますが、メリットが読み解けるに至りませんでした。
souta-haruran

2017/03/08 01:04 編集

Lhankor_Mhyさん 何度もご回答頂きありがとうございます。 そのような理由からなんですね。 オプションの設定についても知識及ばず認識していませんでした。 大変勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問