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 对象的数组,其属性和值是键:值对(