このようなことをするのは初めてなので、少し手探りしているので、これを説明するために最善を尽くします。
ページの最初で、3 つのレシピを返す関数を呼び出します。次に変数を作成し、それぞれにレシピ ID を割り当てます。
$meal = builder::buildMealPlan(1200,0,0,0,3);
$id1 = $meal[0][id];
$id2 = $meal[1][id];
$id3 = $meal[2][id];
これで、関数によって選択された 3 つのレシピの ID がわかったので、これらの 3 つのレシピを 3 つの div に表示します。
<div id="meal1"><h2><? print_r($meal[0]); ?></h2></div>
<div id="meal2"><h2><? print_r($meal[1]); ?></h2></div>
<div id="meal3"><h2><? print_r($meal[2]); ?></h2></div>
これらの div のいずれかがクリックされると、そのレシピが気に入らず、別のレシピが必要になることを意味します。4 つのパラメーター (id1、id2、id3、クリック) を持つページが呼び出され、基本的に現在表示されている 3 つのレシピが次のように伝えられます。どのレシピがクリックされたかだけでなく、同じ ID の 2 つのレシピと新しいレシピの別の組み合わせを見つけることができます。
$(document).ready(function(){
$("#meal1").click(function(){
$.get("testing-01.php?id1=<?echo $id1;? >&id2=<?echo $id2;?>&id3=<?echo $id3;?>&clicked=1", function(result){
$("#meal1").html(result);
});
});
これはうまく機能し、適切なレシピが選択され、div が新しいレシピで更新されますが、私の問題は、div のいずれかをもう一度クリックすると、同じレシピで何度も更新されることです。 $id1、$id2、$id3) は、ページが再ロードされないため、常に同じ値です。
私の質問: onclick イベントの結果で JavaScript 変数を設定するにはどうすればよいですか? 現在、クリックイベントは div を次のデータに置き換えます。
$.get("testing-01.php?id1=<?echo $id1;? >&id2=<?echo $id2;?>&id3=<?echo $id3;?>&clicked=1
ただし、divがクリックされるたびに、上記のステートメントで送信している変数を新しい値で更新する必要があります。
ここまで読んでくれてありがとう。重要/明白なことを省いた場合はお知らせください。追加します.
編集:わかりました、私は今JSONを出力しています:
{"mealnumber":1,"id":"69","title":"Protein Packed Meatloaf","description":"This meatloaf is packed with protein to help your muscles grow.","cookingtime":"00:25 ","preptime":"00:10 ","servings":"4.00","rating":"0.000","calories_ps":"205.00","carbohydrate_ps":"7.70","protein_ps":"20.55","fat_ps":"9.64"}
少なくとも正しく読んでいることを示すための私のJSコード:
$(document).ready(function(){
$("#meal1").click(function(){
$.getJSON("testing-01.php?id1="+id1+"&id2="+id2+"&id3="+id3+"&clicked=1", function(data) {
$.each(data.items, function(i, item) {
console.log(item.id);
alert(item.id);
});
});
});
});
ただし、div をクリックしても何もログに記録されず、警告も表示されません。コンソールで、正しいページを呼び出していることがわかります。URL をコピーして貼り付けると、上で貼り付けた json コードが取得されます。