私は非常に単純な登録フォームを持っています。フォームは jQuery/Ajax を使用して処理のために PHP ページに送信されます。アプリ全体でこの同一のコードを使用していますが、何らかの理由で、この 1 つのページでは機能していないため、問題がどこにあるのかを突き止めようとしています。このページには特別なことはなく、同じドメインにあるので、ここで途方に暮れています...
フォームが送信されると、次の jQuery 関数がフォームを処理します。
var dataString = $(event.target).serialize();
var url = '/post/register.php';
console.log( dataString ); // OUTPUTS firstname=Andrew&email=me@email.com
$.ajax({
type: "POST",
url: url,
data: dataString,
dataType: "text",
error: function(jqXHR,textStatus,errorThrown) {
// ERROR
},
success: handleRegistration
});
コンソールは、フォームからのデータが適切にシリアル化されていることを示しています。
PHP ページ (register.php) には、単純に次のコードがあります。
$newArr[]= array('email'=>$_POST['email'], 'firstname'=>$_POST['firstname']);
ob_start();
print_r($newArr);
$c=ob_get_contents();
ob_end_clean();
$fp=fopen('test.txt', "wb");
fwrite($fp, $c);
fclose($fp);
これは、POST 変数を「test.txt」という TXT ファイルに書き込むだけです。テキスト ファイルは、変数が空であることを示しています。
Array
(
[0] => Array
(
[firstname] =>
[email] =>
)
)
POST変数を受信していない理由を理解することはできません。
誰?
* 回答 * デモ用に上記の URL を変更しましたが、私のアプリでは次の URL でした:
var url = '/post/register';
そして、登録フォルダー内に「index.php」ファイルがありました。
フォームは PHP ページに送信されていましたが、末尾の「/」が欠落していたため、クエリ文字列が正しく送信されませんでした。したがって、私の問題に対する答えは、単にURLを次のように変更することでした:
var url = '/post/register/';
私の側ではなんてばかげたバグ - 理解するのに時間がかかりすぎました:S