让我详细解释一下这个问题。我使用PHP和smarty。
我从查询字符串中获取值op=back
。但是每次PHP文件运行时都不会发生这种情况,所以op=back
是我在特定链接上点击事件的价值。我的PHP文件代码片段如下:
<?php
include_once("includes/teacher-application-header.php");
prepare_request();
$request = empty( $_GET ) ? $_POST : $_GET ;
$op = $request['op'];
$objTeachClassSub = new TeacherClassesSubjects();
global $teacher_profile_from_session;
$teacher_id = $teacher_profile_from_session['TEACHER_ID'];
$teacher_classes_subjects = $objTeachClassSub->GetClassSubjectMappingsbyTeacherId($teacher_id);
$smarty->assign('teacher_classes_subjects', $teacher_classes_subjects);
$smarty->assign("op",$op);
$smarty->display("teacher-details.tpl");
?>
现在smarty文件中的代码片段如下:
{literal}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
</script>
{/literal}
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" >
<tr>
<td align="left" valign="top">
<h3>Teacher Details</h3>
</td>
</tr>
</table>
<table width="99%" border="0" cellpadding="0" cellspacing="0" class="manage_box" >
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="1" width="100%">
<tr>
<td width="25%">
{if $teacher_classes_subjects}
{foreach from=$teacher_classes_subjects item="classes_subjects"}
<b><a href="#" id="{$classes_subjects.class_id}">{$classes_subjects.class_name}</a></b><br />
{if $classes_subjects.class_subjects}
<div id="class_subjects_{$classes_subjects.class_id}">
{foreach from=$classes_subjects.class_subjects item="class_subjects"}
<i><a id ="back" href="chapter_details.php?class_id={$classes_subjects.class_id}&cs_map_id={$class_subjects.cs_map_id}">{$class_subjects.subject_name}</a></i><br />
{/foreach}
</div>
<br />
{/if}
{/foreach}
{/if}
</td>
<td width="75%">
{if $chapter_details}
<ul>
{foreach from=$chapter_details item=chapter}
<li><a href="chapter_details.php?op=get_chapter_theory&chapter_id={$chapter.chapter_id}&class_id={$class_id}&cs_map_id={$cs_map_id}&chapter_title={$chapter.chapter_title}">{$chapter.chapter_title}</a></li>
{/foreach}
</ul>
{/if}
{include file=$file_to_show}
</td> aly what is
</tr>
</table>
</td>
<td align="left" id="subject_container" valign="top">
</td>
<td align="left" id="chapter_container" valign="top">
</td>
</tr>
</table>
现在我想要实现的是在上面的智能模板文件中编写一个jQuery代码,如果op值返回(即{op==back}
),它将执行。
实际上,当op=back
点击事件触发以下链接时,预期的是什么:
<a id ="back" href="chapter_details.php?class_id={$classes_subjects.class_id}&cs_map_id={$class_subjects.cs_map_id}">{$class_subjects.subject_name}</a>
有谁能解释我如何实现这个功能?在此先感谢。
答案 0 :(得分:1)
如果您想在op ==返回时访问特定网站,您只需将其重定向到您的PHP代码
if(isset($_GET['op']) && $_GET['op'] == 'back'){
header('location: yourpath/youurl.php');
}
请记住在回应任何内容之前执行此操作。
如果要在设置此选项时触发单击,只需打印一个脚本并准备好文档和$('#back')。触发器('click')如果您使用的是jQuery:
//$go = (isset($_GET['op']) && $_GET['op'] == 'back');
{if $go}
<script>
$(document).ready(function(){
$('#back').trigger('click');
});
</script>
{/if}
修改
单击该链接将使浏览器进入另一个页面,除非您使用了类似e.preventDefault()的内容。如果你还没有,我会建议使用我提出的第一个解决方案。 如果您需要到达客户端的请求,然后出于任何原因重新定向,或者您执行其他操作,我将使用第二种解决方案。
希望有所帮助
答案 1 :(得分:1)
我想你最好的选择是将它设置为模板中隐藏的html输入,并在文档中的java脚本中准备好检查该html输入的值,然后更改链接的href属性
答案 2 :(得分:0)
如果你输入标题
,我想这应该有效<?php
if($_GET['op'] == "back"){
?>
<script>
$(document).ready(function(){
$('#back').trigger('click');
});
</script>
<?php
}
?>
但是如果你需要在完全加载页面后执行此操作,可以在JQuery中设置计时器并在可能为1秒之后执行此Jquery脚本
答案 3 :(得分:0)
您可以在纯JS中创建一个函数来检索参数的查询字符串值,然后使用它来决定是否应该触发链接点击。
类似的东西:
function getQueryStringParameter(name) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
var n = getQueryStringParameter('op');
if(n == 'back'){
$('#back').trigger('click');
}
希望它有所帮助。