LoginSignup
2
3

More than 5 years have passed since last update.

Ajax についての覚書

Last updated at Posted at 2016-08-19

さらに修正
dataTypeに関して大いなる勘違い。
dataTypeはAjaxの返り値の受取方法なので、これは送り先サーバーが値をどのような形式で返答してくるかを設定。
送るデータ形式とは全く関係ない。

データ送信は基本KEY->Val形式 以下の二種類。もしかして配列を入れると自動変換してくれるかも?
data:'&foo=bar1&foo=bar2';
data:{ foo1:'bar1', foo2:'bar2'};

送信でjsonを利用することはまれ。何故なら受け取り側がPOSTやGETというKey->Val形式だから。

data: $('#form').serialize(), //&foo=bar1&foo=bar2 の形式
dataType:'json', //任意

POSTの取得側のロジックは以下のとおり

$data = $_POST;
echo json_encode( array("result" =>  $data  ));

それに対して、何かしらの理由でobj形式の受け渡しが必要な場合(ex:多次元配列)、
JSON.stringify(serializeArray)をセットで利用するが、その場合、そもそも$_POSTの形式に適合しない。

data: JSON.stringify($('#form').serializeArray()),
dataType:'json', //任意

JSONの取得側のロジックは以下のとおり

$json = file_get_contents('php://input');
$data = json_decode($json, true);
echo json_encode( array("result" =>  $data  ));


かなり悪戦苦闘の末、理解できた
https://teratail.com/questions/44809

dataTypeにjsonは基本使わない、私レベルでは。フォームのデータを送る程度なら?key=val& 形式のserializeのデータを送る。で二次配列だからこそ$_POSTの形式に沿って取得できる

$('#form').serialize(),
dataType:'text', <= ? 

POSTの取得側のロジックは以下のとおり

$data = $_POST;
echo json_encode( array("result" =>  $data  ));



それに対して、何かしらの理由でobj形式の受け渡しが必要な場合(ex:多次元配列)、JSOS.stringify(serializeArray)dataType:jsonをセットで利用するが、その場合、そもそも$_POSTの形式に適合しない。
JSON.stringify($('#form').serializeArray()),
dataType:'json',

JSONの取得側のロジックは以下のとおり

$json = file_get_contents('php://input');
$data = json_decode($json, true);
echo json_encode( array("result" =>  $data  ));
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3