技術資料

jQueryで実現するフォームの複数送信:外部サービスと自サーバーへの同時送信

作成日:2025.09.29

フォームから送信されるデータを自サーバーと外部サービスの両方に同時送信する方法を、jQueryのajax機能を使って実現する手法を解説しています。実装例では、Salesforceなど実際に利用される外部サービスとの連携を想定し、二重送信防止など、運用時に押さえるべきポイントにも触れています。

目次

前提

  • 問い合わせフォームに入力された内容を、自サーバー上のスクリプトと、外部のサービス( 例えば Salesforce の Account Engagement など )の両方に送信したい場合を考えます。
  • 通常、フォームの action 属性には送信先の URL を1つだけ指定しますが、ここでは jQuery を使って複数の送信先にデータを送る方法を紹介します。
  • フォームに入力された情報を受け付けて、表示を行なう確認画面からの送信を想定しています。

実装例

以下は、jQuery を使ってフォームを https://example.com/form-submit と、https://external-service.com/submit の2つのURLに送信する例です。

まず、HTML部分。

<form method="POST" id="confirmForm" action="https://example.com/form-submit">
    <input type="hidden" name="user_name" value="Tatsuya Abe">
    <input type="hidden" name="user_email" value="tatsuya@example.com">
    <input type="hidden" name="user_tel" value="090-1234-5678">
    <p id="confirmMsg">上記の内容で送信します。よろしいですか?</p>
    <input type="button" id="submitBtn" value="送信する">
</form>

次に、jQuery部分。

jQuery(function($) {
    $('#submitBtn').click(function(){
        $('#submitBtn').prop('disabled', true); // 二重送信防止
        $('#confirmMsg').html('送信中です。しばらくお待ちください...');
        $.ajax({
            type: 'POST',
            url: 'https://external-service.com/submit',
            data: $('#confirmForm').serialize(),
            dataType: 'html',
            success: function(data, status) {
                $('#confirmForm').submit();
            },
            error: function(xhr, status, error) {
                alert('送信に失敗しました。時間をおいて再度お試しください。');
                return false;
            }
        });
        return false;
    });
});

上記のコードでは、フォームの送信ボタンがクリックされたときに、まずボタンを無効化して二重送信を防止し、確認メッセージを「送信中です。しばらくお待ちください...」に変更します。

次に、jQueryの $.ajax メソッドを使って、フォームのデータを外部サービスのURL https://external-service.com/submit に非同期で送信します。送信が成功した場合は、元々のフォームの送信先にデータを送信します。送信が失敗した場合は、エラーメッセージを表示します。

この方法により、フォームのデータを複数の送信先に送ることができます。

注意点として、外部サービスのURLがCORS(Cross-Origin Resource Sharing)をサポートしている必要があります。また、セキュリティ上の理由から、信頼できる送信先のみを指定するようにしてください。

また、外部サービスへの送信失敗時にも、元のフォーム送信を行いたい場合は、error コールバック内で $('#confirmForm').submit(); を呼び出すように変更してください。

この記事を書いた人

※上が私です。

奈良市を拠点に、26年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。

これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。

【制作会社・企業様向けサポート】
  • 専任エンジニアのいない企業様に対するシステム面の不安を解消
  • 柔軟な契約形態や短納期での対応により、急なニーズにも迅速にサポート
  • システムの企画段階から運用まで、ワンストップでのサービスを提供

Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。

ぜひ、プロフィールWeb制作会社様向け業務案内一般企業様向け業務案内もご覧くださいね。

チェックボックス操作のためのjQuery基本メモ

2025.02.05

jQueryを使ってチェックボックスの状態を操作するための基本的なコードをまとめています。フォームやインタラクティブなUIを作成する際に役立つ内容です。

JavaScript jQuery

jQueryでフォームのreadonly属性を操作する方法

2025.02.04

jQueryを使ってフォーム要素のreadonly属性を動的に操作する方法について解説します。readonlyの設定と解除の手順をシンプルにまとめました。

JavaScript jQuery

ダッシュボードのパフォーマンス改善:Ajaxとiframeの実践例

2024.12.11

サーバーサイドですべてを処理してから画面を出力するのではなく、データを分割して効率的に表示する手法をご紹介。Ajaxとiframe、それぞれの特徴や実装例をわかりやすく解説します。

HTML JavaScript jQuery

contenteditableで作るインライン編集システムとデータ送信の仕組み

2024.12.03

contenteditable属性を利用すれば、HTML内のテキストを直接編集できるインターフェースを構築できます。 本記事では、contenteditableを活用したインライン編集機能の実装手法について解説します。 UIの向上を目指す際の参考として。

CSS HTML JavaScript jQuery

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP