2013-05-31 27 views
5

Hãy để tôi giải thích chi tiết câu hỏi. Tôi đang sử dụng PHP và thông minh. Tôi nhận được giá trị op=back từ chuỗi truy vấn. Nhưng điều này sẽ không xảy ra mỗi khi tập tin PHP chạy, do đó, khi op=back là giá trị tôi đã tạo ra sự kiện nhấp chuột trên một liên kết cụ thể. PHP đoạn mã tập tin của tôi được đưa ra dưới đây:Làm cách nào để thực thi mã jQuery tùy thuộc vào giá trị nhận được thông qua chuỗi truy vấn?

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

Bây giờ đoạn mã từ file smarty là như sau:

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

Bây giờ những gì tôi muốn đạt được là viết một mã jQuery trong thông minh trên tệp mẫu sẽ thực thi nếu giá trị op được trả về (ví dụ: {op==back}). Trên thực tế những gì đang mong đợi là khi sự kiện op=back nhấp chuột sẽ nhận được nổ súng vào liên kết sau:

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

bất cứ ai có thể giải thích cho tôi làm thế nào để đạt được chức năng này? Cảm ơn trước.

Trả lời

1

Nếu bạn muốn đi đến một trang web cụ thể khi op == lại bạn nên chỉ cần chuyển hướng nó trong bạn mã php

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

Hãy nhớ để làm được điều này trước khi lặp lại bất cứ điều gì.

Nếu bạn muốn kích hoạt một nhấp chuột khi tùy chọn này được thiết lập chỉ cần in một kịch bản có điều kiện với một tài liệu đã sẵn sàng và một $ ('# trở lại') kích hoạt (nghe tiếng 'click') nếu bạn đang sử dụng jQuery:.

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

EDIT

Nhấp vào liên kết đó sẽ làm cho trình duyệt đến trang khác, trừ khi bạn đã sử dụng một cái gì đó như e.preventDefault(). Nếu bạn không, tôi khuyên bạn nên sử dụng giải pháp đầu tiên tôi đã đề xuất. Nếu bạn cần yêu cầu chuyển đến ứng dụng khách, sau đó chuyển hướng, vì bất kỳ lý do nào hoặc bạn làm điều gì đó khác, tôi sẽ sử dụng giải pháp thứ hai.

Hy vọng nó giúp

+0

Tôi muốn kích hoạt sự kiện nhấp chuột chỉ trên một liên kết, tôi không muốn chuyển hướng đến bất kỳ URL nào. Khi tôi nhấp vào một liên kết, một vài giá trị sẽ chuyển qua dạng chuỗi truy vấn khi nhấp vào liên kết.Vì vậy, giải pháp của bạn có vẻ hơi không phù hợp với vấn đề này. Bạn có bất kỳ ý tưởng tốt hơn khác hơn này? – PHPLover

0

Tôi đoán này nên làm việc nếu bạn đặt trong phần đầu

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

nhưng nếu bạn cần phải làm điều này sau khi trang của bạn được tải hoàn toàn bạn có thể đặt hẹn giờ trong JQuery và thực hiện điều này Tập lệnh Jquery sau có thể là 1 giây

+0

Hoặc Tạo một hàm và gọi hàm đó trên tải trọng cơ thể – Kam

1

Tôi đoán tùy chọn tốt nhất của bạn là đặt nó thành đầu vào html ẩn trong mẫu của bạn và trong tập lệnh java của bạn trong tài liệu sẵn sàng kiểm tra giá trị của đầu vào html đó, sau đó thay đổi href thuộc tính của liên kết của bạn

0

Bạn có thể tạo một hàm trong JS thuần túy để truy lục giá trị chuỗi truy vấn của các tham số và sau đó sử dụng nó để quyết định xem bạn có nên kích hoạt liên kết hay không.

một cái gì đó như thế này:

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

hy vọng nó giúp.

Các vấn đề liên quan