下の例文を参考に、動かないので自分用にカスタマイズ(ッテなんだ?
追記(未検証、覚書)
●受け取り側を$_POST
で受け取る場合は、一次配列として送る
js
/*送信側*/
data: $form.serialize(),
dataType: "text", <=未検証
php
//受け取り側
$data = $_POST;
echo json_encode( array("result" => $data ));
●受け取り側でオブジェクトや多次元配列で受け取る場合は、jsonとして送る
js
/*送信側*/
data: JSON.stringify($form.serializeArray()),
dataType: "json",
php
//受け取り側
$get_json = file_get_contents('php://input');
$data = json_decode($get_json, true); //trueは配列化
echo json_encode( array("result" => $data ));
修正版 修正なのか理解できず苦肉の策として…かは秘密
$('#the-form').on('click',function(event) {
// HTMLでの送信をキャンセル
event.preventDefault(); //だめ、止まらない。submit使わない => でも必須。入れないとFxでuncaught exception: out of memory発生
// 操作対象のフォーム要素を取得
var $form = $("#myForm");
// 送信ボタンを取得
var $button = $form.find('#myButton');
// 送信
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: JSON.stringify($form.serializeArray()),
dataType: "json",
timeout: 10000, // 単位はミリ秒
// 送信前
beforeSend: function(xhr, settings) {
// ボタンを無効化し、二重送信を防止
$button.attr('disabled', true);
},
// 応答後
complete: function(xhr, textStatus) {
// ボタンを有効化し、再送信を許可
$button.attr('disabled', false);
},
// 通信成功時の処理
success: function(result, textStatus, xhr) {
// 入力値を初期化
$form[0].reset();
alert('OK');
},
// 通信失敗時の処理
error: function(xhr, textStatus, error) {
alert('NG...');
}
});
});
引用
$('#the-form').submit(function(event) {
// HTMLでの送信をキャンセル
event.preventDefault();
// 操作対象のフォーム要素を取得
var $form = $(this);
// 送信ボタンを取得
var $button = $form.find('button');
// 送信
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: $form.serialize(),
timeout: 10000, // 単位はミリ秒
// 送信前
beforeSend: function(xhr, settings) {
// ボタンを無効化し、二重送信を防止
$button.attr('disabled', true);
},
// 応答後
complete: function(xhr, textStatus) {
// ボタンを有効化し、再送信を許可
$button.attr('disabled', false);
},
// 通信成功時の処理
success: function(result, textStatus, xhr) {
// 入力値を初期化
$form[0].reset();
alert('OK');
},
// 通信失敗時の処理
error: function(xhr, textStatus, error) {
alert('NG...');
}
});
});