2012-03-09 15 views
8

all。私はjQuery/PHPチャット・プログラムを構築しました。しかし、私はチャンネルや部屋のような機能を追加したいと思います。理想的には、チャットの上部にあるタブを使用して、ユーザーがどちらの部屋にいるかを管理したい(2つしかない)。これは簡単な作業だと思っていましたが、前と同じようなことがありましたが、タブがクリックされたときに未知の例外エラーが発生し続け、ソースが正しく読み込まれません。私は問題がそこにあるかもしれないと感じているので、チャットシステム全体のコードを投稿します。未知の例外:jQuery UIタブ:不一致のフラグメント識別子

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

チャット本体

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

私は前後に切り替えることがgetChatのjqueryの関数にパラメータを追加するつもりですが、私が持っているもので、私は」私は立ち往生した。誰かが私を正しい方向に向けることができますか?

答えて

14

JQuery UIのタブプラグインでは、コンテンツdivは、リンクのulと同じコンテナに存在すると見なされます。

あなたの場合、コンテンツdivはのすぐ下にあり、ulの下にあると考えられますが、そこには存在しません。

+0

私のコードではdivが正しくネストされています。他にどこに問題がありますか? – softwareplay

-3

jquery UIタブをjQuery Mobileアプリケーションに実装する際に、この問題が発生しました。

のjQueryを使用して1.7.2

のjQuery UI 1.8.2

jQueryのモバイル1.1。

問題は、jQuery UIとjQuery Mobileのバージョンの互換性の問題です。

evryバグレポートを読んで、jQueryのライブラリバージョンを切り替えると、jQuery Mobileのレガシーバージョン1.0.1にダウングレードされ、jQuery UIタブコンポーネントと競合しなくなりました。

jQuery Mobileの開発者がこれを将来のバージョンで修正したいと思っています。