2011-01-24 13 views
0

私はかなりjavascript/ajaxを新しくしていますので、私に同行してください。 POST変数としてフォームフィールド値をPHPスクリプトに送り、そのPHPスクリプトでセッション変数を設定しようとしています。私はJavaScriptスクリプトを呼び出すページのコンテンツを更新する必要はありません。だからここに私はここで...ajaxリクエスト/ php session vars

をやっている私のjavascriptのものである:

xmlhttp.open("POST","ajax/create_employee_session_handler.php",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("blah=1"); 
window.location="newpage.php"; 

そして、ここでは私のPHPコード(簡体字)である:

session_start(); 
if($_POST) 
{ 

    $_SESSION['blah'] = $_POST['blah']; 
} 

そして、いくつかの理由で、次のページにリダイレクトすると、$ _SESSION ['blah']は表示されません。これについての提案は感謝します。

答えて

4

あなたはAJAXリクエストを開始していますが、終了する機会を与えていません(Ajaxの "A"は "Asynchronous"の略で、location()を実行してもまだ実行中です)。スクリプトが呼び出されることはありません。

ページの位置をAjaxリクエストの成功コールバックに切り替えて、リダイレクトする前に動作することを確認します。

+2

これを実装するには、xmlhttp.onreadystatechange = function(){if(this.readyState == 4)window.location = 'newpage.php';を実行します。 }; –

+0

さて、今はリダイレクトしていないので、リクエストしていないと仮定しています。ファイル/ URLをロードできなかった場合は例外がスローされますか?ディレクトリの問題かもしれません。 –

+0

おっと、お詫び申し上げます。私の変数を設定しています。しかし、そのリダイレクトは興味深いものではありません。 –