2012-03-09 18 views
8

tất cả. Tôi đã xây dựng một chương trình trò chuyện jQuery/PHP đơn giản hoạt động khá tốt. Tuy nhiên, tôi muốn thêm một tính năng như kênh hoặc phòng. Lý tưởng nhất, tôi muốn sử dụng các tab ở phía trên cùng của cuộc trò chuyện để quản lý phòng người dùng đang ở (chỉ có 2). Tôi nghĩ rằng đây sẽ là một nhiệm vụ đơn giản, và tôi đã nhìn thấy một cái gì đó tương tự được thực hiện trước đây, nhưng tôi tiếp tục nhận được lỗi ngoại lệ uncaught khi các tab được nhấp vào, và các nguồn không tải một cách chính xác. Tôi sẽ đăng mã cho toàn bộ hệ thống trò chuyện, bởi vì tôi có cảm giác vấn đề có thể nằm trong đó.ngoại lệ không bắt buộc: Tab giao diện người dùng jQuery: Mã định danh phân đoạn không khớp

các jquery

page = { 
    getChat: function() { 
     $.ajax({ 
      url: 'game_src.php', 
      data: 'mode=getChat', 
      dataType: 'html', 
      cache: false, 
      success: function(res){ 
       $("#chatbox").html(res); 
      } 
     }); 
    } 
}; 

$("#submitmsg").click(function(){ 
    var clientmsg = $("#usermsg").val(); 
    $.ajax({ 
     url : 'game_src.php', 
     data: 'mode=chatSubmit&msg=' + encodeURIComponent(clientmsg) 
    }); 
    $("#usermsg").attr("value", ""); 
    return false; 
}); 

setInterval(page.getChat, 4000); 

$("#chatChannel").tabs({ 
    cookie: { expires: 1 }, 
}); 

cơ thể trò chuyện

<?php 
if($user->data['user_id'] == ANONYMOUS) 
{ 

} 
else 
{ 
    ?> 
    <div id="chatChannel"> 
     <ul> 
      <li><a href="#global">Global</a></li> 
      <li><a href="#alli">Alliance</a></li> 
     </ul> 
    </div> 
    <form name="message" action=""> 
     <input name="usermsg" type="text" id="usermsg" size="25" /> 
     <input name="submitmsg" type="submit" id="submitmsg" value="Send" /> 
    </form> 
    <br /> 
    <?php 
} 
?> 
<div id="chatbox" style="border:1px solid black;background-color: rgba(255,255,255,0.3);height:400px;overflow:auto;"> 
    <div id="global"> 
    <?php 
    $chatMsgs = array(); 
    $limit = time()-86400; 

    $sql = 'SELECT COUNT(chat_id) as count FROM '.CHAT_TABLE.' WHERE chat_channel = 0 AND chat_time > '.$limit; 
    $result = $db->sql_query($sql); 
    $row = $db->sql_fetchrow($result); 
    $count = $row['count']; 

    if($count > 0) 
    { 
     $sql = 'SELECT * FROM '.CHAT_TABLE.' WHERE chat_channel = 0 AND chat_time > '.$limit.' ORDER BY chat_time DESC'; 
     $result = $db->sql_query($sql); 
     while($row = $db->sql_fetchrow($result)) 
     { 
      $chatMsgs[] = array(
       'chat_time' => $row['chat_time'], 
       'chat_msg' => $row['chat_msg'], 
       'chat_user' => $row['chat_user'], 
       'chat_channel' => $row['chat_channel'] 
      ); 
     } 

     foreach($chatMsgs as $msg) 
     { 
      $sql = 'SELECT username FROM '.USERS_TABLE.' WHERE user_id = '.$msg['chat_user']; 
      $result = $db->sql_query($sql); 
      $row = $db->sql_fetchrow($result); 
      $username = $row['username']; 

      echo '<div class="chatMsg" style="border-bottom:1px solid black;">'; 
      echo '<div class="chatUsr">'.$username.' says:</div>'; 
      echo '<div class="chatUsrMsg" style="float:left;">'.$msg['chat_msg'].'</div>'; 
      echo '<div class="chatMsgTime" style="float:right;">'.date("g:i a", $msg['chat_time']).'</div>'; 
      echo '</div>'; 
      echo '<br />'; 
      echo '<hr />'; 
     } 
    } 
    else 
    { 
     echo '<div class="chatMsg">Nothing is heard but the sound of crickets...</div>'; 
    } 
    ?> 
    </div> 
    <div id="alli"> 
    <?php 
    $chatMsgs = array(); 
    $limit = time()-86400; 

    $sql = 'SELECT COUNT(chat_id) as count FROM '.CHAT_TABLE.' WHERE chat_channel = 1 AND chat_time > '.$limit; 
    $result = $db->sql_query($sql); 
    $row = $db->sql_fetchrow($result); 
    $count = $row['count']; 

    if($count > 0) 
    { 
     $sql = 'SELECT * FROM '.CHAT_TABLE.' WHERE chat_channel = 1 AND chat_time > '.$limit.' ORDER BY chat_time DESC'; 
     $result = $db->sql_query($sql); 
     while($row = $db->sql_fetchrow($result)) 
     { 
      $chatMsgs[] = array(
       'chat_time' => $row['chat_time'], 
       'chat_msg' => $row['chat_msg'], 
       'chat_user' => $row['chat_user'], 
       'chat_channel' => $row['chat_channel'] 
      ); 
     } 

     foreach($chatMsgs as $msg) 
     { 
      $sql = 'SELECT username FROM '.USERS_TABLE.' WHERE user_id = '.$msg['chat_user']; 
      $result = $db->sql_query($sql); 
      $row = $db->sql_fetchrow($result); 
      $username = $row['username']; 

      echo '<div class="chatMsg" style="border-bottom:1px solid black;">'; 
      echo '<div class="chatUsr">'.$username.' says:</div>'; 
      echo '<div class="chatUsrMsg" style="float:left;">'.$msg['chat_msg'].'</div>'; 
      echo '<div class="chatMsgTime" style="float:right;">'.date("g:i a", $msg['chat_time']).'</div>'; 
      echo '</div>'; 
      echo '<br />'; 
      echo '<hr />'; 
        } 
    } 
    else 
    { 
     echo '<div class="chatMsg">Nothing is heard but the sound of crickets...</div>'; 
    } 
    ?> 
    </div> 
</div> 

Tôi sẽ để thêm một tham số cho hàm getChat jquery để chuyển đổi qua lại, nhưng với những gì tôi có, i' m bị kẹt. ai đó có thể chỉ cho tôi phương hướng đúng không?

Trả lời

14

Plugin tab giao diện người dùng JQuery mong đợi nội dung div s nằm trong cùng một vùng chứa với các liên kết ul.

Trong trường hợp của bạn, nó mong đợi nội dung div s nằm trong div id="chatChannel" ngay dưới ul, nhưng chúng không có ở đó.

+0

Trong mã của tôi, div được lồng đúng. nơi nào khác có thể là vấn đề? – softwareplay

-3

Tôi gặp sự cố này trong khi triển khai các tab giao diện người dùng jquery thành ứng dụng jQuery Mobile. sử dụng

jquery 1.7.2

jquery UI 1.8.2

jQuery Mobile 1.1.

Vấn đề là sự tương thích giữa các phiên bản jQuery UI và jQuery Mobile.

Sau khi đọc báo cáo lỗi evry và chuyển đổi giữa các phiên bản thư viện của jQuery, tôi đã tìm thấy giải pháp hạ cấp xuống phiên bản jQuery Mobile Legacy 1.0.1 không bị xung đột với thành phần tab jQuery UI.

Mong rằng các nhà phát triển jQuery Mobile sẽ sửa lỗi này cho các phiên bản sau

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