我会尽力解释这一点,因为我有点摸索,因为这是我第一次做这样的事情。
在页面的开头,我调用了一个返回 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、clicked)的页面,基本上告诉它当前显示为的 3 个食谱以及单击了哪个,因此我可以找到具有 2 个相同 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 变量?现在点击事件将 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 代码。