質問: $("#date1").val(); $.post('sample.php', { data : val }, function() { console.log(val); }); }); }); ``` (sample.php) これでデータが来ているのかもよく分かっていません。console.log(val)では値の確認ができていたのでpostされたと思ってもいいのでしょうか? ```
回答: > > ajax処理なのか単なるjavascriptのpost処理なのか、はたまたjqueryのpost処理なのか > > > Ajaxは簡単に言うとブラウザ内でjavascriptがHTTPリクエストを投げる技術のことで、ここで挙げられている3つは基本的には大体同じだと思っていいと思います。POSTというのはHTTPリクエストの種類の1つです。 Ajaxに対比されるのが普通のページ遷移時に発生するブラウザによるHTTPリクエストで、この場合サーバはHTMLを返してブラウザがそのHTMLを再度レンダリングするという形になります。 この辺の話は先にHTTPについて勉強すると理解しやすいかもしれません。 以下質問に答えます(質問が多いのでリストにするなどしていただけると分かりやすくなってありがたいです...)。 ``` BUTTON ``` こういうformを使ったページ遷移はブラウザによるHTTPリクエストになりますが、ここではこのformは使われておらず、jsでリクエストを投げているので、ajaxです。そしてこのformは特に意味がないので消しちゃっていいと思います。 > > dataに値を入れてますが、このdataは変数的なもので考えていいでしょうか? > > > javascriptのオブジェクトのプロパティ名です。これを指して変数かと言われるとちょっと微妙なので、javascriptの基本的なところを復習してみてください。 > > これでデータが来ているのかもよく分かっていません。console.log(val)では値の確認ができていたのでpostされたと思ってもいいのでしょうか? > > > `console.log(val)` の `val` はその前で宣言したもので、サーバから返された値ではありません。以下のように `$.post` の第3引数のコールバック関数に仮引数を追加してください。 ``` $.post('sample.php', { data : val }, function(response) { console.log(response); }); ``` > > 結果的にここで何をreturnしてhtmlにどのように出力すれば良いのでしょうか? > > > まあ、これくらいだったらプレーンテキストとしてそのまま返しちゃっていいんじゃないですかね。phpは自信がないですが、`$date` をそのままechoなりすればいいと思います。その出力がそのままHTTPレスポンスのボディになります。js側のコールバックでresponseがどのようになっているかを確認してください。 htmlに対する操作は、「jQuery DOM 操作」 などで調べると解説記事が出てくると思います。