Пример jjueryUI ajax tabs не работает - PullRequest
2 голосов
/ 07 июля 2011

Я играю с jQueryUI, с пакетом разработки, но возникают проблемы. Поэтому вместо этого я пробую другой подход.

Проверьте пример здесь: http://jqueryui.com/demos/tabs/ajax.html

Нажмите «Tab 2» и «Tab 3». Все отлично работает.

Теперь я просмотрел и скопировал исходный HTML-код в локальный файл и заменил все относительные пути на абсолютные:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>jQuery UI Tabs - Content via Ajax</title>

    <link rel="stylesheet" href="http://jqueryui.com/themes/base/jquery.ui.all.css">
    <link rel="stylesheet" href="http://jqueryui.com/demos/demos.css">

    <script src="http://jqueryui.com/jquery-1.5.1.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.core.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.widget.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.tabs.js"></script>

    <script>
    $(function() {
        $( "#tabs" ).tabs({
            ajaxOptions: {
                error: function( xhr, status, index, anchor ) {
                    $( anchor.hash ).html(
                        "Couldn't load this tab. We'll try to fix this as soon as possible. " +
                        "If this wouldn't be a demo." );
                }
            }
        });
    });
    </script>
</head>
<body>

<div class="demo">

<div id="tabs">
    <ul>
        <li><a href="#tabs-1">Preloaded</a></li>

        <li><a href="http://jqueryui.com/demos/tabs/ajax/content1.html">Tab 1</a></li>
        <li><a href="http://jqueryui.com/demos/tabs/ajax/content2.html">Tab 2</a></li>
        <li><a href="http://jqueryui.com/demos/tabs/ajax/content3-slow.php">Tab 3 (slow)</a></li>
        <li><a href="http://jqueryui.com/demos/tabs/ajax/content4-broken.php">Tab 4 (broken)</a></li>
    </ul>
    <div id="tabs-1">
        <p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>
    </div>
</div>

</div><!-- End demo -->

<div class="demo-description">
<p>Fetch external content via Ajax for the tabs by setting an href value in the tab links.  While the Ajax request is waiting for a response, the tab label changes to say "Loading...", then returns to the normal label once loaded.</p>
<p>Tabs 3 and 4 demonstrate slow-loading and broken AJAX tabs, and how to handle serverside errors in those cases. Note: These two require a webserver to interpret PHP. They won't work from the filesystem.</p>
</div><!-- End demo-description -->

</body>
</html>

Теперь скопируйте этот HTML, вставьте его в локальный файл .html и просмотрите в браузере.

Когда я нажимаю «Tab 2» и «Tab 3» для локального файла, он выдает ошибку «не удается загрузить эту вкладку», что означает, что он не может найти эти файлы content1.html и content2.html - но они действительно существуют и имеют содержание:

http://jqueryui.com/demos/tabs/ajax/content1.html (и content2.html)

Я принимаю сумасшедшие таблетки здесь? Может кто-нибудь объяснить, что я делаю не так?

Примечание: эта проблема первоначально возникла, когда я делал примеры jQueryUI локально, и я подумал, что ей не нравятся относительные пути к локальным html-файлам. Этот пример выше показывает, что это что-то еще.

p.s. Я попробовал этот тест в Firefox (Ubuntu, Windows) и IE (Windows). Та же проблема.

Заранее спасибо за помощь.

1 Ответ

6 голосов
/ 07 июля 2011

Это потому, что эти две вкладки загружаются по запросу ajax, а ваша локальная копия не имеет разрешения / разрешения на выполнение запроса ajax на сайт jquery ui.

Как правило, вы не можете отправить междоменный запрос ajax из-за same origin policy. Это говорит -

Политика разрешает сценариям, работающим на страницах, исходящих с одного сайта, получать доступ к методам и свойствам друг друга без особых ограничений, но запрещает доступ к большинству методов и свойств на страницах разных сайтов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...