ホームページ >バックエンド開発 >PHPチュートリアル >jQuery フォームの送信が PHP サーバーに届かないのはなぜですか?

jQuery フォームの送信が PHP サーバーに届かないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 08:11:02338ブラウズ

Why is my jQuery form submission not reaching my PHP server?

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

問題: jQuery の結果を使用してフォームのデータを送信しようとしていますサーバーにデータが到達しません。

HTML フォーム:

<code class="html"><form id="contactForm" name="contactForm" method="post">
    <!-- Input fields and textarea -->
    <input id="submitBtn" type="submit" name="submit" value="Trimite">
</form></code>

JavaScript (jQuery):

<code class="javascript">$(document).ready(function(e) {
    $("#contactForm").submit(function() {
        $.post("getcontact.php", $("#contactForm").serialize())
        .done(function(data) {
            if (data.trim().length > 0) {
                $("#sent").text("Error");
            } else {
                $("#sent").text("Success");
            }
        });

        return false;
    })
});</code>

PHP (getcontact.php):

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

原因:

問題は $.post() の使用にあります。方法。デフォルトでは、jQuery は application/x-www-form-urlencoded 形式でデータを送信します。ただし、PHP の $_REQUEST スーパーグローバルでは、フォーム送信のデータが multipart/form-data 形式であることが期待されます。

解決策:

これを修正する 1 つの方法は、次のとおりです。 contentType および processData オプションを false に設定して $.ajax() メソッドを使用します。

<code class="javascript">var datastring = $("#contactForm").serialize();
$.ajax({
    type: "POST",
    url: "your url.php",
    data: datastring,
    contentType: false,
    processData: false,
    dataType: "json", // If desired
    success: function(data) {
        // Handle success
    },
    error: function() {
        // Handle error
    }
});</code>

もう 1 つのオプションは、PHP スクリプトで var_dump($_POST) ステートメントを使用して、フォームの送信をデバッグし、データが正しく受信されているかどうか。

以上がjQuery フォームの送信が PHP サーバーに届かないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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