2012-03-09 10 views
8

tümü. Oldukça iyi çalışan basit bir jQuery/PHP sohbet programı oluşturduk. Ancak, kanal veya oda gibi bir özellik eklemek istiyorum. İdeal olarak, kullanıcının hangi odada olduğunu (sadece 2 olacak) yönetmek için sohbetin üst kısmındaki sekmeleri kullanmak istiyorum. Bunun basit bir görev olacağını düşündüm ve daha önce yaptığım benzer bir şey gördüm, ancak sekmeler tıklandığında yakalanmamış istisna hatasını alıyorum ve kaynak düzgün yüklenmiyor. Bütün sohbet sisteminin kodunu yayınlayacağım, çünkü sorunun orada bulunabileceğini hissediyorum.yakalanmamış özel durum: jQuery UI Sekmeleri: Eşleşmeyen parça tanımlayıcısı

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

sohbet vücut

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

ben ama ne var, i' ile, ileri geri geçiş yapmak getChat jquery işleve bir parametre eklemek için gidiyorum m sıkışmış. Beni doğru yöne yönlendiren var mı?

cevap

14

JQuery UI sekmesi eklentisi, div s içeriklerinin ul bağlantılarıyla aynı kap içinde olmasını bekler. Sizin durumunuzda, div s içeriğinin ul'un altında div id="chatChannel" içeriğinde olmasını bekler, ancak orada değillerdir.

+0

Kodumda div doğru şekilde yuvalanmış. sorun başka nerede olabilir? – softwareplay

-3

jQuery Mobile uygulamasına jquery UI sekmelerini uygularken bu sorunu yaşadım. jquery

kullanarak 1.7.2

jquery UI 1.8.2

jQuery Mobile 1.1.

Sorun, jQuery UI ve jQuery Mobile sürümleri arasındaki uyumluluk sürümleridir.

Hata raporunu okuduktan ve jQuery'nin kitaplık sürümleri arasında geçiş yaptıktan sonra jQuery UI sekmesi bileşeniyle çakışmayan jQuery Mobile Legacy sürüm 1.0.1'e yönelik çözümün yerini buldum.

jQuery Mobile geliştiricilerinin bunu gelecekteki sürümler için düzeltmelerini umarım