0

私は非常に単純な登録フォームを持っています。フォームは 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

4

0 に答える 0