我会尽力解释这个问题,因为我是第一次做这样的事情,因为我有点蠢蠢欲动。
在我的页面开头,我调用一个返回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个div中显示这3个配方:
<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的配方组合,以及新的配方:
$(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,它会一遍又一遍地使用相同的食谱刷新,因为我的php变量($ id1,$ id2,$ id3)总是相同的值,因为页面永远不会重新加载。
我的问题:如何使用onclick事件的结果设置javascript变量?现在,on click事件用以下数据替换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代码。
答案 0 :(得分:1)
我不确定我是否理解您所需要的一切,但我想您需要在get方法中更改此3 ID。
你可以制作一些存储3个id的简单javascript对象,并在成功ajax上重写它...购买你需要更好的repsonse然后只是html ...尝试json ......
$(document).ready(function(){
$("#meal1").click(function(){
$.get("testing-01.php?id1="+SomeJavascriptObject.id1"&id2="+SomeJavascriptObject.id2"&id3="+SomeJavascriptObject.id3"&clicked=1", function(result){
SomeJavascriptObject.id1 =result.returnedID1;
SomeJavascriptObject.id2 = result.returnedID2;
SomeJavascriptObject.id3 = result.returnedID3;
$("#meal1").html(result.html);
});