Jquery - 每次单击div时,使用$ _GET变量提取新数据

时间:2012-10-07 16:16:42

标签: php jquery ajax

我会尽力解释这个问题,因为我是第一次做这样的事情,因为我有点蠢蠢欲动。

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

1 个答案:

答案 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);
    });

Maybe this can help you.