2009-03-03 57 views
31

jQueryを使用してPHP $ _SESSION変数を設定する必要があります。ユーザーがイメージをクリックした場合、そのイメージに関連する情報をPHPのセッション変数として保存します。

私はこれを行うには、PHPページまたは関数を呼び出して、その情報をクエリ文字列に追加することができます。

アイデア私はgoogleを通して少しの助けを見つけた。

おかげ マイク

答えて

68

jQueryだけでは実行できません。 Ajax(これはjQueryでできます)とPHPバックエンドの組み合わせが必要です。非常に単純なバージョンは、次のようになります。

HTML:

<img class="foo" src="img.jpg" /> 
<img class="foo" src="img2.jpg" /> 
<img class="foo" src="img3.jpg" /> 

Javascriptを:

$("img.foo").onclick(function() 
{ 
    // Get the src of the image 
    var src = $(this).attr("src"); 

    // Send Ajax request to backend.php, with src set as "img" in the POST data 
    $.post("/backend.php", {"img": src}); 
}); 

PHP(backend.php):

<?php 
    // do any authentication first, then add POST variable to session 
    $_SESSION['imgsrc'] = $_POST['img']; 
?> 
+18

欠落のsession_start();それ以外のバックエンドでは、これは素晴らしいヒントです!おかげでルーク... – Codex73

7

は別のPHPページにPHPの機能を入れて試してみたい、と変数を設定するには、AJAX呼び出しを使用する場合があります。

5

あなたが探しているものはjQuery Ajaxです。そして、リクエストを処理するPHPページを設定するだけです。

5

ここでの回答の多くは、方法の問題に対処するものではありません。 PHP $ _SESSIONのキーと値のペアがサーバーに格納されます。これは、ブラウザに保存されているCookieとは異なります。このため、PHPとJavaScriptの両方からクッキー内の値にアクセスすることができます。 さらに悪いことに、ブラウザからのAJAXリクエストには、Webサイトに設定したCookieは含まれていません。そのため、JavaScriptがセッションIDのCookieを取得し、サーバーがそのヘッダーやテールを作成できるようにするために、すべてのAJAXリクエストにJavaScriptを含める必要があります。 PHPセッションは、HTTPヘッダーとともにクッキーが送信されないと、HTTP GETまたはPOST変数にフェイルオーバーするように設計されています。 私は、RESTfulなWebアプリケーションの原則と、セッションハンドラを利用するのではなく、そのような種類のアプリケーションに共通するデザインパターンの使用法について検討します。 (backend.php)を含むことを確認することで

3

私も(ルカデニスのソリューションに似ています。ここでは大したことない)自分で「PHPのセッション値設定」ソリューションを設計し、私のセッション値を設定した後、私のニーズは "でした別の.phpファイルにジャンプ "します。

あなた-afterの上に「$ .post」自分の価値観:私の問題は一種の簡単だった[OK]を、私は私のjqueryのコード内で、それをやった...しかし、何かはかなり仕事しませんでした...

小さな.phpファイルでは、 "成功/失敗"の戻り値を待つ必要があります。この成功値を読み込んだ後でジャンプを実行してください。あなたはただすぐ次のビッグに飛び乗る。PHPセッションファイルに設定されていない可能性があり、$ _SESSION ["my_var"]を実行しているときにおそらく "空"と表示されます。宛先.phpファイルから取得します。私の場合は

、その状況を修正するために、私はjQueryの$ .postのコードを変更し、この方法:もちろん

$.post('set_session_value.php', { key: 'keyname', value: 'myvalue'}, function(ret){ 
    if(ret==0){ 
     window.alert("success!"); 
     location.replace("next_page.php"); 
    } 
    else{ 
     window.alert("error!"); 
    } 
}); 

、あなたの「set_session_value.php」ファイル、エコー」 『0』を返す必要があります。 'または' echo "1"; '(またはあなたが必要とするかもしれない成功値)

ご挨拶。

1

ルークの答えに似ていますが、GETに似ています。

このphp-codeをphp-pageに置きます。 getpage.php:

<?php 
$_SESSION['size'] = $_GET['size']; 
?> 

次に、このようなjQueryのスクリプトでそれを呼び出す:

$.get("/getpage.php?size=1"); 

フェデリコに同意します。場合によっては、POSTを使用して問題に遭遇することもありますが、ブラウザーに関連するかどうかは不明です。

0

javascriptの部分でonClick()をclick()に変更すると、firefoxで動作します。

$("img.foo").click(function() 
 
{ 
 
    // Get the src of the image 
 
    var src = $(this).attr("src"); 
 

 
    // Send Ajax request to backend.php, with src set as "img" in the POST data 
 
    $.post("/backend.php", {"img": src}); 
 
});

関連する問題