необработанное исключение: вкладки пользовательского интерфейса jQuery: несоответствующий идентификатор фрагмента - PullRequest
8 голосов
/ 10 марта 2012

все. Я построил простую программу чата jQuery / PHP, которая работает довольно хорошо. Однако я бы хотел добавить такую ​​функцию, как каналы или комнаты. В идеале я хотел бы использовать вкладки в верхней части чата, чтобы определить, в какой комнате находится пользователь (их будет всего 2). Я думал, что это будет простая задача, и я видел что-то похожее, что было сделано ранее, но я продолжаю получать ошибку необработанного исключения, когда нажимаются вкладки, а источник загружается неправильно. я опубликую код для всей системы чата, потому что у меня есть ощущение, что проблема может лежать в этом.

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 параметр для переключения туда и обратно, но с тем, что у меня есть, я застрял. Кто-нибудь может указать мне правильное направление?

Ответы [ 2 ]

14 голосов
/ 10 марта 2012

Плагин вкладок пользовательского интерфейса JQuery ожидает, что содержимое div s будет находиться в том же контейнере, что и ul ссылок.

В вашем случае ожидается, что содержимое div s будет в div id="chatChannel" прямо под ul, но его там нет.

0 голосов
/ 04 июля 2012

У меня была эта проблема при внедрении вкладок пользовательского интерфейса jquery в мобильное приложение jQuery.использование

jquery 1.7.2

jquery UI 1.8.2

jQuery Mobile 1.1.

По-видимому, проблема заключается в совместимости версий между jQuery UI и jQuery Mobileверсии.

После прочтения каждого сообщения об ошибке и переключения между библиотечными версиями jQuery я обнаружил, что решение понизилось до версии 1.0.1 jQuery Mobile Legacy, которая не вступала в конфликт с компонентом вкладок пользовательского интерфейса jQuery.

Надеюсь, что разработчики jQuery Mobile исправят это в будущих версиях

...