34

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

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

何か案は。私はグーグルを通してほとんど助けを見つけませんでした。

ありがとうマイク

4

8 に答える 8

80

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'];
?>
于 2009-03-03T19:16:22.290 に答える
7

PHP 関数を別の PHP ページに配置して、AJAX 呼び出しを使用して変数を設定してみてください。

于 2009-03-03T19:08:40.093 に答える
5

あなたが探しているのはjQuery Ajaxです。そして、リクエストを処理するためのphpページをセットアップするだけです。

于 2009-03-03T19:09:27.627 に答える
5

ここでの多くの回答は、方法については言及していますが、理由については言及していません。PHP $_SESSION キーと値のペアはサーバーに保存されます。これは、ブラウザに保存される Cookie とは異なります。これが、PHP と JavaScript の両方から Cookie の値にアクセスできる理由です。さらに悪いことに、ブラウザからの AJAX リクエストには、ウェブサイトに設定した Cookie が含まれていません。そのため、JavaScript にセッション ID Cookie をプルさせ、サーバーがその先頭または末尾を作成できるようにするために、すべての AJAX 要求にそれを含める必要があります。明るい面では、Cookie が HTTP ヘッダーと一緒に送信されない場合、PHP セッションは HTTP GET または POST 変数にフェイルオーバーするように設計されています。

于 2009-03-03T20:51:46.353 に答える
3

また、自分で「phpセッション値セッター」ソリューションを設計しました(Luke Dennisのソリューションに似ています。ここでは大したことはありません)が、セッション値を設定した後、「別の.phpファイルにジャンプする」必要がありました。わかりました、jqueryコード内でそれを行いました...しかし、何かがうまくいきませんでした...

私の問題はちょっと簡単でした:

-値を小さな.phpファイルに「$.post」した後、「成功/失敗」の戻り値を待ち、この成功値を読み取った後でのみジャンプを実行する必要があります。次の大きな.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」ファイルは「echo」0を返す必要があります。'または'echo"1"; '(または必要になる可能性のある成功値)。

ご挨拶。

于 2011-03-21T10:43:56.430 に答える
3

(backend.php) に include を必ず含めてください

session_start();

-テイラー http://www.hawkessolutions.com

于 2010-03-23T00:29:14.673 に答える
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});
});

于 2015-09-17T09:16:15.253 に答える