【问题标题】:Pass jquery data beween php pages在php页面之间传递jquery数据
【发布时间】:2019-02-14 04:44:28
【问题描述】:

我有一个 php 类处理程序,用于为我的 exercise-group.php 页面创建 html 输出。但是,使用 Jquery/AJAX 调用此输出(项目数组)并将其添加到页面中。但是,有一些数据值没有显示,因为它们将被传递到 exercise-single.php 页面。如何使用 jquery 收集这些数据值,将它们加载到 php 值中并将它们存储到 $_Session 变量中,以便在用户单击 href 标记后,executive-single.php 可以显示这些变量。很抱歉发了这么长的帖子,但这是我能做的最好的解释我想做的事情。

Exercise.class.php

class Exercises {

public $vidSource;

public function displayExercises($result) {        
    if ($result->num_rows > 0) {
        // output data of each row
        while ($row = $result->fetch_assoc()) {                                         
             echo   "<div class='media'>" .
                    "<div class='media-object pull-left'>" .
                        "<a href='exercise-single.php'><img src='".$row["ImgResource"]."' class='img-responsive' alt='curl'></a>" .
                    "</div>" .
                    "<div class='media-body'>" .
                        "<h4 class='media-heading'><a href='#'>".$row["Exercise"]."</a></h4>" . 
                    "</div>" .
                "</div>";
$vidSource = $row["VidResource"];
        }
    } else {
        echo "<img src='https://media.giphy.com/media/cwTtbmUwzPqx2/giphy.gif' class='img-responsive'>"; 
        echo "<h3 class='media-heading'>No workouts exist for this muscle yet.<br>Please try another one.</a></h3>";
    }
 }
}
?>

ExerciseHandler.php

 <?php

include 'Exercises.class.php';
include 'dbconnect.php';

if(isset($_POST['muscle'])){

$muscle =$_POST['muscle']; 

$connect = new mysqli($servername, $username, $password, $dbname);

$sql = "SELECT * FROM exercises WHERE Muscle = '".$muscle."'";
$result = $connect->query($sql);

$exercises = new Exercises();

$exercises->displayExercises($result); 

}
?>

loadExercises.js

var muscle_id;

function getMuscle(clicked_muscle){
muscle_id = clicked_muscle;


$.post("ExerciseHandler.php", {
  muscle: muscle_id
},
function(data, status){
    $("#exercise-list").html(data);
});

}

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    //处理程序

     echo $exercises->displayExercises($result); 
    

    //练习课

      public function displayExercises($result) {        
       if ($result->num_rows > 0) {
          return json_encode(
           array(
           'status' => 'success',
           'data' => $result->fetch_assoc())
          );
       } else {
          return json_encode(
             array(
               'status' => 'error',
               'data' => array(
                 'url' => "https://media.giphy.com/media/cwTtbmUwzPqx2/giphy.gif",
                 'class' => 'img-responsive',
                 'prompt' => 'Please try another one.'
               )
             )
          );
        }
      }
    

    //这里是jquery

    $.ajax({
      url : "ExerciseHandler.php",
      method : "POST",
      success : function(response){
        var result = JSON.parse(response);
        if(result.status == 'error'){
          $('img').attr('src',result[0].url);
          $('img').attr('class',result[0].class);
          $('h3').text(result[0].prompt);
        }else{
          $.each(result.data,function(index,value){
              // do the html append thing here
          });
        }
      }
    });
    

    【讨论】:

      【解决方案2】:

      如果您想在每个会话的所有页面中全局访问数据,您应该像这样在 while block 中创建这样的会话,

              if ($result->num_rows > 0) {
              // output data of each row
              while ($row = $result->fetch_assoc()) {
                   $_SESSION["name"] = $row["column_heading"];//create session                           
                   echo   "<div class='media'>" .
                          "<div class='media-object pull-left'>" .
                              "<a href='exercise-single.php'><img src='".$row["ImgResource"]."' class='img-responsive' alt='curl'></a>" .
                          "</div>" .
                          "<div class='media-body'>" .
                              "<h4 class='media-heading'><a href='#'>".$row["Exercise"]."</a></h4>" . 
                          "</div>" .
                      "</div>";
      $vidSource = $row["VidResource"];
              }
          } else {
              echo "<img src='https://media.giphy.com/media/cwTtbmUwzPqx2/giphy.gif' class='img-responsive'>"; 
              echo "<h3 class='media-heading'>No workouts exist for this muscle yet.<br>Please try another one.</a></h3>";
          }
       }
      

      这会奏效。并且不要忘记在您的 php 文件中启动会话。请记住,您应该在要设置或获取会话的 php 文件的每个页面上启动会话。你可以通过简单地添加

      session_start();

      【讨论】:

      • 谢谢!抱歉回复晚了,辛苦了。我会尽快尝试您的解决方案
      猜你喜欢
      • 1970-01-01
      • 2018-09-13
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2011-02-08
      相关资源
      最近更新 更多