0

我会尽力解释这一点,因为我有点摸索,因为这是我第一次做这样的事情。

在页面的开头,我调用了一个返回 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 代码。

4

1 回答 1

1

我不确定我是否了解您所需要的一切,但我想您需要在 get 方法中更改这 3 个 ID。

您可以制作一些存储 3 个 id 的简单 javascript 对象,并在成功 ajax 上重写它...购买您需要更好的响应,然后只是 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);
    });

也许这可以帮助你。

于 2012-10-07T16:34:14.367 回答