вопрос
Как сделать загрузку всех новостей в категории с помощью Ajax?
Чтобы выглядело примерно так:
Новость 101
Новость 102
Новость 103
Новость 104
Новость 105
[Показать больше] - при нажатии на эту кнопку открывались бы все остальные 104 новости.
Попробовал хак от Rezer:
Но он подгружает страницы по одной (например, по 5 новостей), а как сделать чтобы загружались сразу все страницы?
Чтобы выглядело примерно так:
Новость 101
Новость 102
Новость 103
Новость 104
Новость 105
[Показать больше] - при нажатии на эту кнопку открывались бы все остальные 104 новости.
Попробовал хак от Rezer:
[aviable=main|cat]
<script language="javascript" type="text/javascript">
var navAjaxUrlIE = /*@cc_on!@*/false;
var lastExtNewsUrl = "";
var lastExtNewsPage = 0;
var mainClassNewsNavigation = "basenavi"; // navigation.tpl - название класса основного элемента
function loadExtNews(){
if( lastExtNewsUrl )
{
var url = lastExtNewsUrl.replace( "/page/" + lastExtNewsPage, "/page/" + ( lastExtNewsPage + 1 ) ) + "";
lastExtNewsPage++;
}
else
{
var url = location.href;
url = url.replace( new RegExp( "#(.*)", "g" ), "" ) + "";
var RegExpC = new RegExp( "/page/([0-9]+)", "g" );
if( url.match( RegExpC ) )
{
var page = url.match( /page\/[0-9]{1,50}/ ) + "";
page = parseInt( page.match( /[0-9]{1,50}/ ) );
var newPage = page + 1;
url = url.replace( "/page/" + page, "/page/" + newPage ) + "";
lastExtNewsPage = newPage;
}
else
{
url = url + "page/2/";
lastExtNewsPage = 2;
}
}
lastExtNewsUrl = url;
$( "#dle-content ." + mainClassNewsNavigation + " a" ).html( "<span>Идёт загрузка...</span>" );
$.ajax({
url: url,
data: "",
success: function( data ){
//var parser = new DOMParser();
//var doc = parser.parseFromString( data, "text/html" );
//$( "#dle-content ." + mainClassNewsNavigation ).remove();
//$( "#dle-content" ).html( $( "#dle-content" ).html() + doc.getElementById( "dle-content" ).innerHTML );
var cont = $( data ).find( "#dle-content" );
$( "#dle-content ." + mainClassNewsNavigation ).remove();
$( "#dle-content" ).html( $( "#dle-content" ).html() + $( cont[0] ).html() );
$( "#dle-content ." + mainClassNewsNavigation ).html( "<a href=\"#\" onclick=\"loadExtNews(); return false;\" class=\"loadExtNews\"><span>Загрузить ещё</span></a>" );
if( !navAjaxUrlIE ) history.pushState( {}, "", lastExtNewsUrl );
},
error: function( xhr, ajaxOptions, thrownError ){
// Можно по номеру ошибки определять, но в любом случае ответ не тот, показывать нечего, страхуемся )))
$( "#dle-content ." + mainClassNewsNavigation ).html( "<a href=\"#\" onclick=\"return false;\" class=\"loadExtNews\"><span>Новостей больше нет</span></a>" );
},
dataType: "html",
type: "POST"
});
}
$( document ).ready(
function(){
$( "#dle-content ." + mainClassNewsNavigation ).html( "<a href=\"#\" onclick=\"loadExtNews(); return false;\" class=\"loadExtNews\"><span>Загрузить ещё</span></a>" );
}
);
</script>
[/aviable]
Но он подгружает страницы по одной (например, по 5 новостей), а как сделать чтобы загружались сразу все страницы?