2013-05-31 17 views
5

Soruyu ayrıntılı olarak açıklayayım. PHP ve smarty kullanıyorum. Sorgu dizesinden op=back değerini alıyorum. Ancak bu, PHP dosyasının çalıştığı her seferinde gerçekleşmeyecek, bu yüzden op=back, belirli bir linkte tıklama olayı yapacağım. Benim PHP dosyası kod parçası aşağıda verilmiştir: ArtıkJQuery kodu, querystring aracılığıyla alınan değere bağlı olarak nasıl çalıştırılır?

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

çokbilmiş dosyadan kod parçacığı olarak aşağıdaki gibidir:

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

Şimdi elde etmek istediğinizi yukarıdaki akıllı bir jQuery kod yazmaktır op değeri geri olduğunda (yani {op==back}) çalışacak olan şablon dosyası.

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

herkes nasıl bu işlevselliği elde etmek için beni açıklayabilir: op=back tıklama etkinlik aşağıdaki bağlantıyı ateş almak gerekirken Aslında ne beklendiği nedir? Şimdiden teşekkürler.

cevap

1

Eğer op == geri sadece

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

şey yankılanan önce bunu unutmayın php kodu senin içinde yönlendirmek gerekirken bir spesifik sitesine gitmek istiyorum.

jQuery kullanıyorsanız, bu seçenek sadece bir belgenin hazır ve $ ('# arka') tetik ('klik') ile şartlı bir komut dosyası yazdırmak ayarlanmış bir tıklama tetiklemek isterseniz:

. Eğer e.preventDefault gibi bir şey kullanmış sürece tarayıcıyı yapacak linke tıklandığında
//$go = (isset($_GET['op']) && $_GET['op'] == 'back'); 
{if $go} 
<script> 
    $(document).ready(function(){ 
     $('#back').trigger('click'); 
    }); 
</script> 
{/if} 

DÜZENLEME

, başka bir sayfaya var(). Eğer yapmadıysanız, önerdiğim ilk çözümü kullanmanızı tavsiye ederim. İstemciye ulaşma isteğine ihtiyacınız varsa, daha sonra herhangi bir nedenle yeniden yönlendirin veya başka bir şey yaparsanız ikinci çözümü kullanırdım.

o

+0

Sadece bir bağlantıda tıklama etkinliğini tetiklemek istiyorum, herhangi bir URL'ye yönlendirmek istemiyorum. Bir bağlantıyı tıklattığımda, bağlantıya tıkladıktan sonra birkaç değer sorgu dizesi biçiminde iletiliyor.Bu yüzden çözümünüz bu problem için biraz uygunsuz görünüyor. Bundan daha iyi bir fikrin var mı? – PHPLover

0

Sana başlığında

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

koymak eğer bu çalışması gerekir sanırım ancak sayfa yüklendikten sonra bunu yapmak gerekirse tamamen size JQuery zamanlayıcıyı ayarlayabilir ve bu yürütebilirsiniz yardımcı olur umarım Jquery komut dosyası 1 saniye sonra olabilir

+0

Veya Bir işlev oluşturun ve bu işlevi vücut yükü olarak adlandırın – Kam

1

En iyi seçeneğiniz, şablonunuzdaki gizli bir html girdisine ve bu html girişinin değerini kontrol etmeye hazır olan belgedeki java komut dosyasına ayarlamak ve daha sonra href'i değiştirmektir. bağlantınızın özelliği

0

Parametrelerin sorgu dizesi değerini almak için saf JS'de bir işlev oluşturabilir ve ardından bağlantıyı tıklatıp başlatmamaya karar vermek için kullanabilirsiniz. Böyle

şey:

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

yardımcı olur umarım.

İlgili konular