Проблема загрузки jQuery - PullRequest
       16

Проблема загрузки jQuery

1 голос
/ 24 августа 2011

Все еще новичок в jQuery, нужна помощь по следующим вопросам:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery demo</title>
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>

<script type="text/javascript">
     $(document).ready(function() {
         $('.nav-link').click( function() {
            var href = $(this).attr('href');
            $('#content').load( href, function() {
                alert("Yeahhhh !");
            });
            return false; // don't actually follow the link
         });
     });
</script>

<div class="menu">
    <ul>
    <li><a href="http://www.google.com.my/" class="nav-link"> Yeah 1 </a></li>
    <li><a href="C:\Testing\Yeah1.html" class="nav-link"> Yeah 2 </a></li>
    </ul>
</div>


<div id="content">
    ... Initial Content...
</div>  
 </body>
 </html>

Я создал этот HTML-файл под названием testing.html, и у меня есть еще один простой HTML-файл yeah1.html для тестирования. Перед размещением кодов jQuery ссылка может быть направлена ​​на yeah1.html.

Однако после помещения кодов jQuery $('#content').load( href); должен иметь возможность загружать контент в его DIV, и я даже получил сообщение с предупреждением «Даааааааа!» ... но, тем не менее, контент не загружается .

Ответы [ 4 ]

4 голосов
/ 24 августа 2011

Многие браузеры (Chrome, FF) будут блокировать загрузку файлов непосредственно с вашего диска по соображениям безопасности.

Когда вы обращаетесь к файлу с помощью C:\..., протокол будет file.Ссылка в конечном итоге выглядит следующим образом:

<a href="file:///C:\Testing\Yeah1.html" class="nav-link"> Yeah 2 </a>

Чтобы исправить это, поместите файл Yeah1.html в виртуальную папку вашего веб-сайта и используйте абсолютный или относительный путь для его загрузки по протоколу http.

(относительный путь)

<a href="Yeah1.html" class="nav-link"> Yeah 2 </a>

или (абсолютный путь)

<a href="/Yeah1.html" class="nav-link"> Yeah 2 </a>

или (абсолютный путь, полностью указанный)

<a href="http://mysite.com/Yeah1.html" class="nav-link"> Yeah 2 </a>

То и тогдакак упоминалось Деннис , в вашем случае загрузка не выполняется из-за нарушения политики одного источника.Таким образом, вы можете получить Yeah1, html для загрузки, но вызов google.com не будет выполнен, если вы не переключитесь на jsonp

function jsonpCallback(data, status) {
    alert("data: " + data + ", status: " + status);
}

$.ajax({
    url: "http://www.google.com.my/",
    dataType: 'jsonp',
    jsonpCallback: 'jsonpCallback',
});
1 голос
/ 24 августа 2011

U может загружать все, что существует в вашем домене, но по соображениям безопасности вы не можете загружать страницы из других доменов.

http://api.jquery.com/load/ Дополнительные примечания: Из-за ограничений безопасности браузера большинство запросов «Ajax» подчиняются той же политике происхождения; запрос не может успешно получить данные из другого домена, субдомена или протокола.

1 голос
/ 24 августа 2011
<li><a href="Yeah1.html" class="nav-link"> Yeah 2 </a></li>

Изменить абсолютный путь на относительный. Поместите Yeah1.html в ту же папку, что и этот файл. Также Google Chrome и Firefox не будут загружать контент с диска по умолчанию, используйте флаг --allow-file-access-from-files при вызове chrome следующим образом:

c:\>chrome --allow-file-access-from-files

переопределить.

1 голос
/ 24 августа 2011
Загрузка

подчиняется той же политике происхождения, поэтому ваш запрос, скорее всего, не выполнен.

Из документов http://api.jquery.com/load/ для проверки ошибки и успеха:

$("#success").load("/not-here.php", function(response, status, xhr) {
  if (status == "error") {
    var msg = "Sorry but there was an error: ";
    $("#error").html(msg + xhr.status + " " + xhr.statusText);
  }
});
...