Pertanyaan Bagaimana mengeksekusi kode jQuery tergantung pada nilai yang diterima melalui querystring?


Biar saya jelaskan pertanyaannya secara detail. Saya menggunakan PHP dan smarty. Saya mendapatkan nilai op=back dari query-string. Tapi ini tidak akan terjadi setiap kali file PHP berjalan, jadi kapan op=back adalah nilai yang saya miliki untuk mengaktifkan peristiwa klik pada tautan tertentu. Snipet kode file PHP saya diberikan di bawah ini:

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

Sekarang potongan kode dari file smarty adalah sebagai berikut:

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

Sekarang yang ingin saya capai adalah menulis kode jQuery dalam file template cerdas di atas yang akan dijalankan jika nilai op kembali (yaitu.{op==back}). Sebenarnya apa yang diharapkan adalah kapan op=back klik acara harus mendapatkan api pada tautan berikut:

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

Adakah yang bisa menjelaskan kepada saya bagaimana mencapai fungsi ini? Terima kasih sebelumnya.


5
2018-05-31 12:09


asal


Jawaban:


Jika Anda ingin pergi ke situs tertentu ketika op == kembali Anda hanya harus mengarahkannya dalam kode php Anda

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

Ingat untuk melakukan ini sebelum menggemakan apa pun.

Jika Anda ingin memicu klik ketika opsi ini diatur hanya mencetak skrip secara kondisional dengan dokumen siap dan pemicu $ ('# back'). ('Klik') jika Anda menggunakan jQuery:

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

EDIT

Mengeklik tautan itu akan membuat peramban sampai ke laman lain, kecuali Anda telah menggunakan sesuatu seperti e.preventDefault (). Jika Anda belum, saya akan merekomendasikan menggunakan solusi pertama yang saya usulkan. Jika Anda membutuhkan permintaan untuk sampai ke klien, kemudian dialihkan, karena alasan apa pun, atau Anda melakukan sesuatu yang lain, saya akan menggunakan solusi kedua.

Semoga itu membantu


1
2018-05-31 12:26



Saya kira pilihan terbaik Anda adalah untuk mengaturnya ke input html tersembunyi di template Anda, dan dalam skrip java Anda di dokumen siap memeriksa nilai dari input html, kemudian mengubah atribut href dari tautan Anda


1
2018-05-31 19:58



Saya kira ini akan bekerja jika Anda memasukkan header

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

tetapi jika Anda perlu melakukan ini setelah halaman Anda dimuat lengkap Anda dapat mengatur timer di JQuery dan menjalankan skrip Jquery ini setelah mungkin 1 detik


0
2018-05-31 16:15



Anda dapat membuat fungsi dalam JS murni untuk mengambil nilai string kueri parameter dan kemudian menggunakannya untuk memutuskan apakah Anda harus mengaktifkan klik tautan.

sesuatu seperti ini:

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

semoga itu membantu.


0
2018-06-04 03:36