表单在每个页面中 - 仅在特定页面上处理它 - 如果当前不在页面上 - 重定向 - 否则 - 使用 AJAX 更新数据


video.php == 'video'
esse.php == 'esse'

我有我的主页 - "esse"这是我的欢迎页面和页面"视频",这是我的查看视频页面。"Esse"包括顶部导航容器和侧边栏,因此它包含在每个页面中。在顶部导航容器中有两个选择框,用户可以从这些选择框中通过选择标签选择要观看的视频。因此,用户可以单击链接访问"视频"页面,或者只需从顶部导航容器中选择标签并点击"搜索"。我希望(我认为这是唯一的方法(将我的 AJAX 调用放在"esse"中。因此,如果用户在任何页面上,但"视频"我想将他重定向到"视频"(如果他选择标签并点击搜索(,但如果他已经在"视频"上 - 我想 AJAX 轮流更新内容而不重新加载页面(这很烦人(。问题是我(有我对"esse"的 AJAX 调用(不知道如何在变量中将来自 AJAX(等成功函数(的响应填充到"视频":

$language 

$level

而且我对如何正确重定向用户感到困惑 - 所以只有当他还没有在"视频"页面上 - 否则 - 只是更新内容。因此,他/她只需使用顶部导航中的选择框即可轻松搜索任何页面上的视频。

这是 esse(只有 AJAX(

  $(document).ready(function() {    
     $('#search').click(function(e) {
        $language = $('#language').val();
        $level = $('#level').val();
         if (!language == '' && !level == '')
        {
            $.ajax({
                type: "GET",
                url: "video.php",
                data: {     language: $language,
                            level: $level,       
                },
                cache: false,
                success: function (data) {
                    alert('success');//actually here I need to pass $level and $language to video.php
                }
            });
            return false;
        }
    });
    });

这里是 esse (表单(

<form method='get' action="video.php">
<select  class="show-select language"   name="language" id='language'>
  <option value='Language'disabled selected >Language</option>
  <option value="All">All</option>
  <option value="Afrikaans">Afrikaans</option>
  <option value="Albanian">Albanian</option>
  <option value="">Welsh</option>    
  </select>
   <div class="search-box">
   <section class="main">
    <div class="wrapper-demo">
    <input type="hidden" name="level" id='level'/>
      <div id="dd" class="wrapper-dropdown-3" tabindex="1">
        <span name='level' class="span-level">Level</span>
        <ul class="dropdown">
        <li class="get"><a href="#"><i class="icon-truck icon-large"> </i>All</a></li>
              <li class="get"><a href="#"><i class="icon-plane icon-large"></i>A1</a></li>
              <li class="get"><a href="#"><i class="icon-plane icon-large"></i>A2</a></li>
              <li class="get"><a href="#"><i class="icon-truck icon-large"></i>B1</a></li>
              <li class="get"><a href="#"><i class="icon-plane icon-large"></i>B2</a></li>
              <li class="get"><a href="#"><i class="icon-plane icon-large"></i>C1</a></li>
              <li class="get"><a href="#"><i class="icon-truck icon-large"></i>C2</a></li>
              <li class="get"><a href="#"><i class="icon-plane icon-large"></i>Native</a></li>
        </ul>
      </div>
    ​</div>
  </section>
</div>
<img name='search' src="img/video.jpg" alt='search' class='search videos' id='search'/> 
</form>

这是视频(仅重要(

<?php  
//here i process (should at least) #language and $level and choose respective query
$query = "SELECT idv,urlv, languagev, levelv, textacv, decribacv, votev FROM vid ORDER BY idv DESC";
if($_SERVER["REQUEST_METHOD"]=="GET"){
if(isset($_GET['search'])){
$language = $_GET['language'];
$level = $_GET['level']; 
if($language == '' && $level == ''){echo ""}
$query = "SELECT idv,urlv, languagev, levelv, textacv, decribacv, votev FROM vid WHERE languagev = '$language' AND levelv = '$level' ORDER BY idv DESC LIMIT 5";
if($language == 'All' || $language == 'Language'){
    $query = "SELECT idv,urlv, languagev, levelv, textacv, decribacv, votev FROM vid WHERE  levelv = '$level' ORDER BY idv DESC LIMIT 5";
}
if($level == 'All' || $level == 'Level'){
    $query = "SELECT idv,urlv, languagev, levelv, textacv, decribacv, votev FROM vid WHERE  languagev = '$language' ORDER BY idv DESC LIMIT 5";
} 
if($language == 'All' && $level == 'All'){
    $query = "SELECT idv,urlv, languagev, levelv, textacv, decribacv, votev FROM vid  ORDER BY idv DESC LIMIT 5";
    }   
 }}
 $fetch = mysqli_query($conn,$query);
 $videos = array();
 while ($row = mysqli_fetch_assoc($fetch)) { ?>
<div class='wrap'>
     <div class='video-wrap'>
        <div class='blockvidname'>
           <div class='name'>
               <h4 class='name-top'><span><?php echo $row['textacv'] ?><?php echo $row['idv'] ?></span></h4>
           </div>  <!-- here goes more code but its same - I retrieve all the values from the array $row and show it - so url of video - name - date - user upploaded etc. -->

澄清更多:如何将一个变量(响应 ajax(从一个页面传递到另一个页面,以及如果用户将在视频中,我如何使用位于"esse"页面上的 AJAX,而无需将相同的 jquery(AJAX( 处理到"video"和"esse"中.php(记住 - ajax 在"esse"上(?此外,脚本如何"知道"用户所在的页面并采取相应的行动 - 重定向到"视频"页面并在用户在"esse"上时执行请求,如果用户在"视频"页面上,则只更新内容?

如果您无法在代码中给我一个可视化示例,请向我解释这个概念。不过这个例子会更好。

'origin':<?=$_SERVER[REQUEST_URI]?>添加到 AJAX 数据对象。然后在视频中.php

$fetch = mysqli_query($conn,$query);
$videos = mysqli_fetch_all($fetch, MYSQL_ASSOC);
if($_GET['origin']==='/videos.php'){
  // here you just send the results to be handled by ajax success function
  // nothing before or after
  echo json_encode($videos);
}else{
  // keep going for every other origin
  foreach ($videos as $row) { ?>
    <div class='wrap'>
     <div class='video-wrap'>

然后在 ajax 成功函数中使用响应数据重新填充行(它将是一个 js 对象的数组,其属性和值是键:值对(

相关内容

最新更新