【问题标题】:uncaught exception: jQuery UI Tabs: Mismatching fragment identifier未捕获的异常:jQuery UI 选项卡:片段标识符不匹配
【发布时间】:2012-03-09 20:19:11
【问题描述】:

全部。我已经构建了一个运行良好的简单 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 函数中添加一个参数来来回切换,但是就我所拥有的而言,我被卡住了。谁能指出我正确的方向?

【问题讨论】:

    标签: php jquery jquery-ui-tabs


    【解决方案1】:

    JQuery UI 选项卡插件期望内容 divs 与链接的 ul 位于同一容器中。

    在您的情况下,它希望内容divs 位于div id="chatChannel" 中,就在ul 下方,但它们不存在。

    【讨论】:

    • 在我的代码中,div 是正确嵌套的。还有什么问题?
    【解决方案2】:

    我在 jQuery Mobile 应用程序中实现 jquery UI 选项卡时遇到了这个问题。 使用

    jquery 1.7.2

    jQuery UI 1.8.2

    jQuery Mobile 1.1.

    问题在于 jQuery UI 和 jQuery Mobile 版本之间的兼容性版本。

    在阅读了所有错误报告并在 jQuery 库版本之间切换后,我发现解决方案降级到 jQuery Mobile Legacy 版本 1.0.1,它与 jQuery UI 选项卡组件没有冲突。

    希望 jQuery Mobile 的开发者在以后的版本中修复这个问题

    【讨论】:

      猜你喜欢
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 2013-02-15
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多