首頁  >  文章  >  後端開發  >  為什麼我的 jQuery 表單提交無法到達我的 PHP 伺服器?

為什麼我的 jQuery 表單提交無法到達我的 PHP 伺服器?

Linda Hamilton
Linda Hamilton原創
2024-10-31 08:11:02249瀏覽

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

使用jQuery 和PHP 序列化和提交表單

問題:嘗試使用資料表沒有資料表到達伺服器。

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):

<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 格式。

解決方案:

解決此問題的一種方法是使用$.ajax() 方法,並將contentType 和processData 選項設為false:

<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>
另一個選項是在PHP 腳本中使用var_dump($_POST) 語句來偵錯表單提交並確定資料是否正常接收。

以上是為什麼我的 jQuery 表單提交無法到達我的 PHP 伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn