2011-02-06 2 views
3

Я пытаюсь создать небольшую простую структуру JS для образовательных целей, но теперь у меня есть проблема, которую я не могу решить.jQuery load() не работает, но нет ошибок JS

структура каталогов

/ 
    /framework 
     jquery.js 
     init.js 
    /content 
     home.html 
     style.css 
    index.html 

Проблема

Я, очевидно, не вставляя файл JQuery и таблицы стилей здесь, но здесь являются index.html и init.js:

index.html

<!DOCTYPE html> 
<head> 
    <script src="framework/jquery-1.5.min.js"></script> 
    <script src="framework/init.js"></script> 
    <title>My website</title> 
</head> 
<body> 
    <div id="content"> 

    </div> 
</body> 
</html> 

init.js

$(document).ready(function(){ 
    if(!window.location.hash) { 
     $("#content").load("../content/home.html", function() { 
      alert("Load was performed."); 
     }); 
    } 
}); 

home.html файл содержит некоторые примеры текста, ничего особенного. Я ожидаю, что jQuery загрузит содержимое home.html в содержимое div, но ничего не происходит, когда я загружаю страницу. Однако предупреждение с сообщением «Загрузка выполнено».

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

Спасибо!

Update:

Это работает, когда я использую это на моем сервере, но в локальном хосте это не удается. Теперь я не могу использовать трюк Firebug, потому что он ничего не показывает, когда я использую его локально. Любые идеи?

+0

Вы уверены, что '../ content/home.html' существует с точки зрения браузера? – Jeremy

+0

Работа на сервере, но не локальное, звучит как 1) другая версия запроса, как уже упоминалось. 2) Различные макеты директорий, как уже упоминалось. 3) Ваш браузер не загружает запросы ajax на localhost, потому что они оценивают как межсайтовый скриптинг – Dave

ответ

6

Если вы используете Firebug, откройте вкладку NET. Это позволяет вам увидеть ответ ajax.

Скорее всего, вы должны использовать: /content/home.html, не ../content/home.html

Путь в контексте страницы, а не где файл JS проживает.

+0

Вы имеете в виду: './Content/home.html' – ifaour

+8

Firebug Firebug Firebug. Если бы все использовали его, то у StackOverflow было бы только 1/10 вопросов Javascript, которые у него есть. +1. – Spacedman

+0

Мне нравится Opera гораздо больше, чем Firefox, но Firefox отлично работает. Спасибо, парни! – Evert

2

Основанием для исполняемого скрипта является местоположение index.html, поэтому относительный путь к home.html равен "content/home.html", а не "../content/home.html".

7

Функция загрузки сломана в выпуске jquery 1.5. Биг-билет можно найти по номеру http://bugs.jquery.com/ticket/8125. Это исправлено в версии 1.5.1, которая еще не выпущена в google и microsoft cdn. Вы можете найти самую последнюю релиз Jquery со всеми последними исправлениями, включая нагрузки() в http://code.jquery.com/jquery-git.js

Я проверил и подтвердил, что ваш код работает в 1.5.1

0

просто попробовать с ./

$(document).ready(function(){ 
    if(!window.location.hash) { 
     $("#content").load("./content/home.html", function() { 
      alert("Load was performed."); 
     }); 
    } 
}); 

, который работает для меня как минимум.

Смежные вопросы