ホームページ >バックエンド開発 >PHPチュートリアル >jQuery フォームの送信が PHP サーバーに届かないのはなぜですか?
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 サイトの他の関連記事を参照してください。