こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

jquery PHP 値 ajax

失礼します。現在jqueryで作成した2次元配列をPHP側に渡したいのですが上手くいきません。
jquery側のコンソールで確認した際にはsuccessの処理が行われ配列の中身がjson形式で表示されるのですが、その内容をPHP側で確認しようとするとNULLが返ってきてしまいます。
何卒ご教授よろしくお願いいたします。

html側
$(function(){
// 送るデータ形式はJSONでなければ、PHP側でエラーが出る.のでJSON.stringify()でJSON形式に変換
send_data= JSON.stringify(data);

// 送信処理
$.ajax({
url: "ajax.php", // 送信先のPHP
type: "POST", // POSTで送る
contentType: "Content-Type: application/json; charset=UTF-8",
//必須ではなさそうだが、サーバ側との整合のために明示しておいた方がよい。
// dataType: 'json', //受信形式 必須ではなさそうだがサーバ側との整合のために明示しておいた方がよい。
data:send_data //JSON形式の送信データ
}).success(function(data, status, xhr) {
// 通信成功時の処理
console.log("success");
console.log("data ="+data);
console.log("status ="+status);
console.log("xhr ="+xhr);

}).error(function(xhr, status, error) {
// 通信失敗時の処理
console.log("error");
}).complete(function(xhr, status) {
// 通信完了時の処理
console.log("fin");
});
})
})

PHP側
二通り試してみました。

<?php
//php://inputはPOSTの生データを取得できる
$json = file_get_contents("php://input");
//JSON形式データをPHPの配列型に変換
$data = json_decode($json);
var_dump($data)
;
//POSTできたデータを格納
$hoge = $_POST['data'];
var_dump($hoge);

投稿日時 - 2017-01-18 15:37:04

QNo.9282800

困ってます

質問者が選んだベストアンサー

> と記載してもブラウザ上で表示されません

それが正しい挙動です。
Ajax で通信してもブラウザはページを再読み込みしている訳ではありませんので、ブラウザ上に表示されることはありません。
Ajax で POST されてきたデータを print_r(); で出力したのであれば、その結果は Ajax 通信の応答に書き込まれているので、ブラウザの開発者ツールを使って Ajax 通信の応答内容を確認するか、「echo json_encode($temps);」として JSON 形式でPHPから応答を返せば、コンソールに出力されると思います。

投稿日時 - 2017-01-18 17:27:00

お礼

そうなのですね、非同期なのだから当然でした汗
ありがとうございました。

投稿日時 - 2017-01-18 18:15:10

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

$.ajax() の中の「data:send_data」を「data: {data: send_data}」にしたら、PHP側は $_POST['data'] で受け取れると思います。

投稿日時 - 2017-01-18 16:52:25

補足

ありがとうございます。
今書き換えたところ
console.logではsuccessの処理を出力してくれるのですが

PHP側で
if(isset($_POST['data'])){
$temps = $_POST['data'];
print_r($temps);
}
と記載してもブラウザ上で表示されません

HTML側で
<?php include ('ajax.php'); ?>
として取り込んではいるのですが汗

投稿日時 - 2017-01-18 17:06:07

-広告-
-広告-
-広告-
-広告-