ホームページ >バックエンド開発 >PHPチュートリアル >jQuery でシリアル化されたフォーム データが PHP サーバーに到達しないのはなぜですか?

jQuery でシリアル化されたフォーム データが PHP サーバーに到達しないのはなぜですか?

DDD
DDDオリジナル
2024-11-02 16:43:02254ブラウズ

Why is my jQuery serialized form data not reaching the PHP server?

jQuery と PHP を使用したフォームのシリアル化と送信

問題: jQuery を使用してフォーム データをシリアル化しても、データはサーバーに到達していません。

HTML フォーム:

<code class="html"><form id="contactForm" name="contactForm" method="post">
    <input type="text" name="nume" size="40" placeholder="Nume">
    <input type="text" name="telefon" size="40" placeholder="Telefon">
    <input type="text" name="email" size="40" placeholder="Email">
    <textarea name="comentarii" cols="36" rows="5" placeholder="Message"></textarea>
    <input id="submitBtn" type="submit" name="submit" value="Trimite">
</form></code>

JavaScript:

<code class="javascript">$("#contactForm").submit(function(e) {
    e.preventDefault(); // Prevent browser submission
    $.post("getcontact.php", $("#contactForm").serialize())
    .done(function(data) {
        // Process server response
    });
});</code>

サーバー-サイド PHP (getcontact.php):

<code class="php">$nume = $_POST["nume"];
$email = $_POST["email"];
$telefon = $_POST["telefon"];
$comentarii = $_POST["comentarii"];</code>

問題の解決策:

この問題は、$.post( ) (jQuery 3.0 では非推奨になりました)。代わりに、次の設定で $.ajax() を使用します:

<code class="javascript">$.ajax({
    type: "POST",
    url: "getcontact.php",
    data: $("#contactForm").serialize(),
    dataType: "json",
    success: function(data) {
        // Process server response
    },
    error: function() {
        // Handle errors
    }
});</code>

この更新されたコードでは:

  • $.preventDefault() はブラウザーによるフォームの送信を停止します。
  • トランスポートは省略され、jQuery が最適なメソッドを選択できるようにします。
  • dataType は「json」に設定され、サーバーの応答を JSON として解釈します。
  • 成功およびエラーのコールバックはサーバーを処理します。それぞれ応答とエラー。

以上がjQuery でシリアル化されたフォーム データが PHP サーバーに到達しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。