2014-02-06 26 views
0

我在这里发生了真正的战斗,并且真的希望有人能够提供帮助。昨晚我尝试了谷歌提供的所有解决方案,但仍未取得成功。

我的网站有一个成分列表,我想添加到配方中。

为这个进程是:

  1. 点击 “添加到配方”。其中打开包含jquery UI选项卡式内容的fancybox iframe,允许用户输入以克为单位的度量值。

  2. 从这里用户点击“添加”和的fancybox含量使得AJAX调用(具有内置其中创建精细的数据串)..

  3. 通过AJAX调用的PHP文件只投中传递的值为int(食品标识和重量),并将其存储在:

    $_SESSION['recipe'][] = array('id' => $id , 'weight' => $weight);

  4. 一旦完成的fancybox关闭和启动页面上的DIV(第一步),其中包含了食谱的热量信息应重新加载和更新。

所有步骤似乎除了3

工作每当我试着vardump它是空会话。

我已经开始在每个页面上进行会话,即步骤1,fancybox页面,然后是ajax调用页面。

我完全失败。

在第3步我的AJAX调用是:

$(document).on('click', '.add-food-button', function() { 
    var weight = $("input#grams").val(); 
    var id = $("input#ingredientid").val(); 
    //var sez = $("input#sez").val(); 

    var dataString = 'g='+ weight +'&id=' + id ; //+ "&sid=" + sez; 

    if (weight > 0) 
    { 

     $.ajax({ 
      type: "POST", 
      url: "../ajax/add-ingredient-to-recipe.php?"+dataString, 
      dataType: "html", 
      data: dataString, 
      success: function (msg) { 


       frames.top.$.fancybox.close(true); 
       frames.top.$('#calorie-table').load('./views/recipe-calorie-chart.tmp.php'); 

      } 

     }); 



    }else{ 
      $('#grams').addClass('errorInput'); 
      $('#weight-label').addClass('errorLabel'); 
    } 

}); 

,并呼吁(第四步),PHP文件是:

<?php 

session_start(); 

include('../includes/config.inc.php'); 

if (isset($_GET['weight']) && $_GET['id']) 
{ 
    $weight = (int) $_GET['weight']; 
    $id = (int) $_GET['id']; 
    $_SESSION['recipe'][] = array('id' => $id,'weight' => $weight); 



} 

?> 

我读过有关传递会话ID通过AJAX作为AJAX调用可能会产生一个新的会话,我实际上需要使用已经打开的会话。如果是这种情况,我该怎么做?

任何建议将是辉煌的!

+0

你在哪里访问$ _SESSION [ '配方']? – user1844933

回答

0

如果你检查你的ajax调用,那么你会发现你在查询字符串中传递“g”&“id”变量。但在PHP文件中,您正在检查“重量”& &“ID”。所以这个条件不会成立,会话也不会设置。所以你会得到空白的会话值。

更新Ajax调用

$.ajax({ 
     type: "POST", 
     url: "../ajax/add-ingredient-to-recipe.php?"+dataString, 
     dataType: "html",   
     success: function (msg) { 


      frames.top.$.fancybox.close(true); 
      frames.top.$('#calorie-table').load('./views/recipe-calorie-chart.tmp.php'); 

     } 

    }); 

更新PHP代码

session_start(); 

include('../includes/config.inc.php'); 

if (isset($_GET['g']) && $_GET['id']) 
{ 
    $weight = (int) $_GET['g']; 
    $id = (int) $_GET['id']; 
    $_SESSION['recipe'][] = array('id' => $id,'weight' => $weight); 



}