2013-05-31 13 views
5

Lasciatemi spiegare la domanda in dettaglio. Sto usando PHP e smarty. Ricevo un valore op=back da query-string. Ma questo non accadrà ogni volta che il file PHP viene eseguito, quindi quando op=back è il valore che ho per generare un evento click su un link specifico. Il mio PHP codice del file frammento è il seguente:Come eseguire il codice jQuery in base al valore ricevuto tramite querystring?

<?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");  
?> 

Ora il frammento di codice dal file Smarty è il seguente:

{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> 

Ora quello che voglio ottenere è quello di scrivere un codice jQuery in quanto sopra intelligente file modello che verrà eseguito se il valore op è tornato (ovvero {op==back}). In realtà ciò che ci si aspetta è quando l'evento op=back click dovrebbe ottenere il fuoco sul seguente link:

<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> 

Qualcuno mi può spiegare come ottenere questa funzionalità? Grazie in anticipo.

risposta

1

Se si vuole andare a un sito specifico quando op == indietro si deve solo reindirizzare in voi codice php

if(isset($_GET['op']) && $_GET['op'] == 'back'){ 
     header('location: yourpath/youurl.php'); 
} 

ricordarsi di fare questo prima eco nulla.

Se si desidera attivare un clic quando questa opzione è impostata basta stampare uno script condizionale con un documento pronto ed un $ ('# back') trigger ('click') se si sta utilizzando jQuery:.

//$go = (isset($_GET['op']) && $_GET['op'] == 'back'); 
{if $go} 
<script> 
    $(document).ready(function(){ 
     $('#back').trigger('click'); 
    }); 
</script> 
{/if} 

EDIT

Cliccando su quel link renderà il browser avuto modo di un'altra pagina, a meno che non hai usato qualcosa come e.preventDefault(). Se non l'avessi, ti consiglierei di usare la prima soluzione che ho proposto. Se hai bisogno della richiesta per arrivare al cliente, poi reindirizza, per qualsiasi motivo, o fai qualcos'altro, utilizzerei la seconda soluzione.

Speranza che aiuta

+0

Desidero attivare l'evento click su un collegamento solo, non desidero reindirizzare a nessun URL. Quando faccio clic su un collegamento, alcuni valori passano sotto forma di stringa di query dopo aver fatto clic sul collegamento.Quindi la tua soluzione sembra un po 'inadatta a questo problema. Hai qualche idea migliore oltre a questo? – PHPLover

0

Credo che questo dovrebbe funzionare se si mette in intestazione

<?php 
    if($_GET['op'] == "back"){ 
     ?> 
    <script> 
     $(document).ready(function(){ 
      $('#back').trigger('click'); 
     }); 
    </script> 
     <?php 
     } 
?> 

ma se hai bisogno di fare questo dopo la pagina viene caricata completamente è possibile impostare il timer in JQuery ed eseguire questo Lo script di Jquery può essere 1 secondo

+0

Oppure Creare una funzione e chiamare quella funzione sul carico del corpo – Kam

1

Suppongo che l'opzione migliore sia impostarla su un input html nascosto nel modello e nello script java nel documento pronto per controllare il valore di quell'input html, quindi modificare l'href attributo del tuo link

0

È possibile creare una funzione in puro JS per recuperare il valore della stringa di query dei parametri e quindi utilizzarlo per decidere se è necessario attivare il clic del collegamento.

qualcosa di simile:

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'); 
} 

Speranza che aiuta.

Problemi correlati