2011-02-01 4 views
1

У меня есть страница, использующая jquery, и я хочу определить, существует ли внешний файл. Если это так, я хочу загрузить его в div, но если это не так, я хочу, чтобы он ничего не делал.Как включить внешний html, если существует, иначе ничего не делать?

Я использую этот код, и он работает, чтобы загрузить файл, но он загружает страницу ошибки 404, если внешний файл не существует. Я очень новичок в jquery и буду признателен за любую помощь. Кроме того, для проверки файла необходимо иметь rootdomain +, чтобы код мог быть подключен к нескольким сайтам без изменений.

$(function() { 
     $('#test').load('/pages/test.html'); 
}); 

Любая помощь была бы принята с благодарностью. Я искал несколько дней, но единственное, что я нашел, - это скрипты проверки главы, которые не имеют возможности ничего делать, если URL недействителен. Я хотел бы знать, как написать этот простой код сам, но сейчас это над моей головой. :)

Джери

ответ

4

Попробуйте использовать метод ajax() вместо load() и установить html() в успех обратного вызова:

$(function() { 
    $.ajax({ 
     url: "/pages/test.html", 
     cache: false, 
     dataType: "html", 
     success: function(html){ 
      $('#test').html(html); 
     } 
    }); 
}); 
+0

Хорошо, очевидно, что я делаю что-то неправильно, так как ни один из примеров здесь не работает для меня. Фактический код в действии не использует URL-адрес с расширением .html. Задний конец сайта заканчивается тем, что он называет страницы «pages/test /» без суффикса. Должно ли это работать? Потому что это не так. – Jeri

+0

обновил мой ответ. добавлена ​​настройка 'dataType'. Попробуйте это ... – hunter

2

Использование a Ajax call:

$.ajax({ 
    url: '/pages/test.html', 
    success: function(data){ 
     $('#test').html(data); 
    }, 
    statusCode: {404: function() { 
    $('#test').html('Unable to retrieve data. Please try again'); 
    } 
}); 
+0

+1 jquery 1.5 ... nice – hunter

+0

Вау, я отправил тот же ответ, что и вы! –

0

Я подумал о том, чтобы сделать что-то похожее. Я бы занялся им с Ajax. В результате поиска в Google появился код, который еще кто-то уже построил на [XUL Ajax site] [1], который, похоже, делает то, что вы хотите - при использовании Ajax для загрузки другой страницы в порядке.

С небольшим количеством кодировки вы можете использовать этот трюк, чтобы ничего не показывать, сообщение или другую страницу, если тот, который вы хотите, не найден ... Прямо сейчас, код отобразит 404, поскольку он существует, но это довольно тривиальное изменение. Фактически, если вы загружаете архив сценариев в нижней части страницы и открываете файл responseHTML.js, вы можете раскомментировать одну строку, чтобы она ничего не делала, если другая страница не существует.

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

Я не могу думать хороший способ сделать это без делать что-то с помощью Ajax ...

Хм. Я был отвлечен на работе, и ссылка не загрузилась. Другие ответы по существу одинаковы и даже проще для jQuery. Необработанный javascript хорош для страниц, которые не используют jquery, поэтому, возможно, стоит оставить ссылку здесь.

http://www.xul.fr/ajax/responseHTML-attribute.html

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