2016-08-25 5 views
2

私は非常に困惑しています。私は非常によく似た質問をした多数の投稿を見つけました。答えが無かったり、すべての答えがうまくいくはずです。それが働いたと言います。JQuery AJAXからPHPへの未定義のインデックス取得

jqueryからphpへのキー値ペアオブジェクトを渡しました。私はPHPのページに行く場合は、それが再び正常に戻って警告する。データがnullまたは未定義のインデックスであることを示します。以下

は私のjqueryの下に

$('#test').click(function(){ 
    var obj= { 
     'key': 'value', 
    }; 
    $.ajax({ 
     url: "../folder/file.php", 
     type: "POST", 
     data: { 
      'obj' : obj 
     }, 
     dataType: "JSON", 
     success:function(data){ 
      alert(data); 
     } 

    }); 
}); 

は私のPHPは、私がテストボタンをクリックしたときに、私は警告valueを取得しますが、上記のコードでは

$data = $_POST['obj']; // this is line 1 
echo json_encode($data); // this is line 2 

です。私はテストボタンをclikced後に私はPHPページに行く場合。ページがNotice: Undefined index: obj on line 1, and null on line 2.

の場合、私は以下のようにPHP側を変更します。私はPHPのページに進みますが、私の元のページがvalue

if(!empty($_POST['obj'])){ 
    $data = $_POST['obj']; 
    echo json_encode($data); 
}else{ 
    echo 'there is nothing'; 
} 

なぜ警告されたとき、私はthere is nothingを得るのだろうか?

私は値を入力するようになっているので、データが通過して戻ったことを意味する必要があります。しかし、PHPのページが別の方法

+1

変数は、セッション変数を除き、スクリプトの異なる実行の間に持続しません。 – Barmar

+0

これは、テストボタンをクリックしたときにデータがそこにあったことを意味しますが、PHPページを読み込んだときに消えてしまいましたか? – codenoob

答えて

3

に値を保存この場合、data:オプションのPOSTパラメータが送信され、スクリプトは$_POSTにアクセスできます。

ブラウザから直接URLにアクセスすると、POSTというパラメータが送信されないため、$_POSTは空です。

PHPスクリプトを実行するたびに、新しいプロセスが開始されます。前のスクリプトで設定された変数は保持されません。スクリプトでsession_start()を使用した場合は、例外は$_SESSIONです。

+0

私の質問はより大きな問題の副題でした。私はもともとオブジェクトにオブジェクトを多く入れて渡そうとしていました。 jquery ajaxで可能です。私は、jqueryの文書はそれが単なるオブジェクトを行うことができると言っていることがわかります。 – codenoob

+1

はい、できます。オブジェクトをURLエンコードすると、PHPはそれを自動的にデコードします。 – Barmar

+0

同じAjaxリクエスト中にPHPページを開くにはどうしたらいいですか?実際には新しいオブジェクトをvar_dumpして、動作しているかどうかをテストできます。 – codenoob

2

あなたはどのようにHTTPの作品を理解していないと言うあなたが値を格納したい場合は、HTTPはステートレスである、PHP session_start()を使用して、AJAXを送信すると、ポストから$_SESSION

関連する問題