-1

これは私が今使っているjavascriptです

<script>
    $( document ).ready(function() {
        var namer = sessionStorage.getItem("namer");
        $.ajax({
            type: "POST",
            url: "Antibiotics2.php",
            data: { 'name': namer }
        }).done(function( msg ) {
            alert( "Data Saved: " + msg );
        });
    });
</script>

これはphpです:

<?php echo $_POST['name']; ?>            

エラーがスローされ、インデックス 'name' が見つからないことが示されます。

4

5 に答える 5

2

送信する変数の名前をPHPに伝えていません:

$.ajax({
            type: 'post',
            url: 'Antibiotics2.php',
            data: { 'namer': namer }
        });
});

$_POSTPHP 側では、変数名を引用符で囲んで次のようにします。

<?php echo $_POST['namer']; ?>
于 2013-05-05T22:16:28.837 に答える
1

post 呼び出しを行っているため、$_GET の代わりに $_POST を使用する必要があります。また、文字列キーには引用符を使用してください

echo $_POST['namer'];
于 2013-05-05T22:14:38.083 に答える
1

投稿リクエストを作成している$_POSTため、データを取得するために使用する必要があります。また、データをキーと値のペアとして送信する必要があります。

<script>
$(document).ready(function() {
        var namer = sessionStorage.getItem("namer");
        $.ajax({
            type: 'post',
            url: 'Antibiotics2.php',
            data: {namer:namer}
        });
});
</script>

php

<?php echo $_POST['namer']; ?>
于 2013-05-05T22:16:22.963 に答える
0

さて、私はあなたの設定を複製し、$_POST 内の変数セットを取得できるたびに. 同様の質問でセッションが正しくキャプチャされていると述べたので、名前の修正も避けました。

namer 変数を undefined に設定するか、存在しない値を取得しようとすることで、エラーを再現できました。

変数 namer が設定されている限り送信できたので、いくつかのことを行う必要があります。

  1. おそらくクライアント側とサーバー側で name 変数が設定されているかどうかを確認します。つまり、変数が未定義でないかどうかをテストするjavascriptで、または$ _POST ['namer']が設定されているかどうかを確認するphpです。

  2. セッションが期限切れになる可能性があるため、存在しない値を取得しようとしています。これは、使用しているライブラリまたはセッションの作成時に宣言した設定に依存する可能性があります

どちらの場合も同じエラーが発生し、いくつかのロジックを実行することでこのエラーを回避できます。

サーバー側のチェック - PHP:

if(isset($_POST['namer'])){
    echo $_POST['namer'];
}else{
    echo "session capture unsuccessful";
}

クライアント側チェック - Javascript:

var namer = sessionStorage.getItem("namer");

if (typeof namer === "undefined")
    console.log("your session is not set");
} else{
    // you could place your ajax request here
    // or you could set the namer variable to a default value
}

可能であれば、Web アプリケーションをローカルで開発してください。デバッグが容易であり、最終的な注意として、デバッグ目的では alert(yourError) よりも console.log(yourError) を使用する方が簡単な場合があります。

于 2013-05-06T08:51:19.590 に答える