LoginSignup
5
6

More than 5 years have passed since last update.

ajax送信の雛形

Last updated at Posted at 2016-08-02

下の例文を参考に、動かないので自分用にカスタマイズ(ッテなんだ?

追記(未検証、覚書)

●受け取り側を$_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...');
      }
  });
});

引用元:横浜ペンギンWEBを行く

5
6
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
5
6