4

jQuery を使用して、フォームを php ファイルに投稿しています。これは、ユーザーの詳細を確認するための簡単なスクリプトです。

var emailval = $("#email").val();
var invoiceIdval = $("#invoiceId").val();

$.post("includes/verify.php", 
       {invoiceId:invoiceIdval , email:emailval },
       function(data) { 
          //stuff here.
});

PHP コード:

<?php
print_r($_POST);
?>

firebug の応答を見ると、空の配列です。配列には少なくとも何らかの値が必要です。

なぜ$_POSTphpファイルで動作しないのかわかりません。Firebug は、投稿されたコンテンツ、電子メール、および請求書 ID を含む投稿を表示しますが、実際には php ファイルで何も受信されません。

フォーム:

<form method="post" action="<?=$_SERVER['PHP_SELF']; ?>" enctype="application/x-www-form-urlencoded">

誰が何をしているのか知っていますか?

ありがとう


これを見つけた - http://www.bradino.com/php/empty-post-array/

それは賢明な道ですか?

4

5 に答える 5

14

$.post()$.ajax()デフォルトで設定される基礎となる呼び出しにデータを渡すapplication/x-www-form-urlencodedので、それはそうではないと思います。

これを試すことができますか:

var post = $('#myForm').serialize();    

$.post("includes/verify.php", post, function(data) { 
    alert(data);
});

このserialize()呼び出しは、現在のすべてのデータを取得しform.myFormます。

于 2008-11-07T02:46:12.540 に答える
4

私は同じ問題に悩まされました.Owenが提供する解決策は適切ではありません. オブジェクトを自分でシリアル化していますが、jQuery がそれを行う必要があります。その場合、 $.get() を実行することもできます。

私の場合、実際には /mydir から /mydir/ へのサーバー リダイレクト (スラッシュ付き) が POST 配列を無効にしたことがわかりました。/mydir 内の index.php にリクエストが送信されました

これはローカル マシン上にあったため、HTTP トラフィックを確認できませんでした。そんなことしてたらもっと早く気がついたのに。

于 2009-04-30T14:15:43.217 に答える
1
application/x-www-form-urlencoded

あなたの答えがあります。$_POST 配列で変数を探しているだけです。本当に必要なのは $_REQUEST です。名前に反して、 $_POST には、送信方法に関係なく、リクエストの本文で送信される入力変数が含まれます。$_GET には、URL のクエリ文字列から解析された変数が含まれます。送信された変数だけが必要な場合は、$_REQUEST グローバルを使用します。

ファイルのアップロードを受信することが予想される場合は、 $_FILES の内容も含む新しい配列を作成する必要があります。

$arguments = $_REQUEST + $_FILES;

于 2008-11-07T02:32:59.930 に答える
0

私はオーウェンから与えられた機能を試しましたが、空白のアラートも受け取りました. 奇妙ですが、クエリ文字列を出力し、空白のアラートを返すことに気付きました。次に、もう一度送信すると、正しい投稿値でアラートが表示されます。

また、id属性を使用してhtmlにフィールド名を設定しました(これは、私がフォローしていたjqueryチュートリアルで行われた方法です)。これにより、フォーム フィールドをシリアル化できませんでした。IDを名前に切り替えたところ、問題は解決しました。

私が探していたものを実行したので、結局 $.ajax を使用することになりました。

于 2010-04-06T18:47:37.063 に答える
-1

jQueryを使用してフォームを送信する直前に、jQueryを使用してすべての入力(必要な非表示の入力も含む)を無効にするケースがありました。「ボタン」タイプの入力のみを無効にするようにjQueryを変更したところ、フォームが送信されたときに非表示の変数が投稿されるようになりました! 非表示の入力を無効に設定すると、その値がフォームに投稿されないようです!

かわった:

$('input').attr('disabled',true);

に:

$('input[type=button]').attr('disabled',true);
于 2011-09-14T08:18:54.707 に答える