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

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

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

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

1回答

1889閲覧

JavaScript XMLHttpRequestについての質問です。

munoudesumimase

総合スコア8

JavaScript

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2016/11/04 14:41

編集2022/01/12 10:55

JavaScript XMLHttpRequestについての質問です。
XMLHttpRequestでformから送信したデータをphp側でjson形式にして保存しています。

HTML フォーム部分

<form method="post" action=""> <input type="text" name="name"> <input type="text" name="value1"> <input type="submit" value="send"> </form>

JS部分

var fd = new FormData(form); var request = new XMLHttpRequest(); request.open('POST','json.php',true); request.setRequestHeader('content-type','application/x-www-form-urlencoded;charset=UTF-8'); request.send(fd);

PHP部分

$name = $_POST['name']; $value1 = $_POST['value1']; $jsonfile = json_decode(file_get_contents('sample.json')); $jsonfile = array("name" => $name,"value1" => $value1); file_put_contents("sample.json", json_encode($jsonfile),FILE_APPEND); $returndata = array(0 => array("name" => $name,"value1" => $value1)); echo json_encode($returndata);

ですが、例えばこんな感じにsubmitされると送信されるようにしてあるのですが、jsonの中身の値がどれもnullになってしまいます。
どのようにしてあげるのが適切なのでしょうか?

PHP部分を載せるのを忘れていました。申し訳ありません。
初心者なりに調べながらやってみたのですが、ごちゃごちゃになって混乱してしまい、
この場をお借りさせていただいてます。
誤字脱字があったらすみません。
よろしくお願い致します。

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

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

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

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

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

MakeNowJust

2016/11/04 14:51

PHP側のコードはどのようになっているのでしょうか?
kei344

2016/11/05 05:46

コードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答1

0

JavaScript中にある、

JavaScript

1request.setRequestHeader('content-type','application/x-www-form-urlencoded;charset=UTF-8');

という一文がよくないです。というのも、FormDataオブジェクトはmultipart/form-data形式でデータを送信するにも関わらず、application/x-www-form-urlencoded形式だと明記してしまっています。このためPHP側で混乱が起こり、送られたデータを正しく解釈できなくなっていました。

また、FormDataオブジェクトはXHRで送信する際に、自動でヘッダーを設定するのでわざわざ自分で書く必要はありません。

なので、この行を消せば上手く動作するかと思います。

投稿2016/11/04 23:28

編集2016/11/04 23:29
MakeNowJust

総合スコア545

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問