$('#some-content-area').ace_ajax({ //options });
.page-content-area[data-ajax-content=true]
element inside .page-content
and its content is updated via ajax because
the following code is available by default in Ace:
$('[data-ajax-content=true]').ace_ajax({ //options });
New Title
html/ajax/ajax.html
file.
data-ajax-content="true"
attribute will have ajax enabled.
assets/js/ace/ace.js
or assets/js/ace.js
or dist/js/ace.min.js
.page-content-area
element with data-ajax-content="true"
attribute.
$('#some-content-area').ace_ajax({ content_url: function(hash) { //hash is the value from document url hash //take "url" param and return the relevant url to load return "path/to/content/"+hash+".html"; }, default_url: 'homepage'//default url , loading_icon: "fa-cog fa-2x blue" });
href
attribute should be like "#mypage1", "#mypage2" so that window hash changes and new ajax content is loaded.
content_url
: is the most important part.
A function that returns a url to retrieve.
default_url
: default url (hash) to loadloading_overlay
: specify the element to put the transparent layer over.loading_icon
: the icon to show when loading new content. Default is "fa fa-spin fa-spinner fa-2x orange"loading_text
: the text to show when loading new content. Default is "" (empty string)update_active
: a function or boolean value indicating whether to update "active" state of newly selected link and its parents. Default is trueupdate_breadcrumbs
a function or boolean value indicating whether to update breadcrumbs. Default is trueupdate_title
: a function or boolean value indicating whether to update window title. Default is trueclose_active
: whether to close submenu of previously active items or not. Default is falsemax_load_wait
: time to wait in seconds before stopping ajax content retrieval if it takes too long for content to arrive. Default is falseclose_mobile_menu
: determines whether to automatically collapse(hide) mobile menu after browsing to a new url
close_dropdowns
: determines whether to automatically hide dropdowns after browsing to a new url
title
tag and update_title
option is true (which is the default),
window title will be updated.
$('#some-content-area').ace_ajax({ content_url: function(hash) { //hash is the value from document url hash //take "hash" param and return the relevant url to load return "content/"+hash+".html"; }, default_url: 'homepage.html'//default url , loading_icon: "fa-cog fa-2x blue" });
content_url
option to return
the correct url.
update_active:true
to work,
the sidebar link element should have data-url
attribute equal to window hash:
update_active
option, to mark the active item:
update_active: function(hash, url) { //do something for example mark selected elements as active //and return the active element to be used in updating breadcrumbs //return active_link_element; }
update_breadcrumbs
option, to update breadcrumbs:
update_breadcrumbs: function(hash, url, active_link_element) { //do something and update breadcrumbs //and return some text to be used in updating window title //return some_text; }
update_title
option, to update window title:
update_title: function(hash, url, some_text) { //do something and update title }Or just insert a
title
tag inside your ajax content.
stopLoading
: call this for ajax loader to stop
$('#some-content-area').ace_ajax('stopLoading', true);
startLoading
is called to start loader:
$('#some-content-area').ace_ajax('startLoading');
loadScripts
is used to load scripts for new ajax page and described in next section.
loadUrl
is used to load a new url based on a hash:
$('#some-content-area').ace_ajax('loadUrl', hash, /* cache or not */);
loadAddr
is used to load a url:
$('#some-content-area').ace_ajax('loadAddr', 'path/to/file.html', null /* optional hash */, /* cache or not */);
post
is used to make a post request:
$('#some-content-area').ace_ajax('post', url, data, updateView, extraParams);
data
is an object or string containing data that you want to postupdateView
specifies whether content area should be updated with new content received from serverextraParams
optional extra ajax parameters to send to jQuery ajax methodajaxpostdone
event triggered right after ajaxloaddone
is triggered.
updateView
to false
to prevent updating content area.
reload
is used to reload current page
working
returns whether ajax loading is in progress or not:
var is_working = $('#some-content-area').ace_ajax('working');
New Title
var scripts = ['path/to/plugin1.js', 'path/to/other-plugin.js'] $('#some-content-area').ace_ajax('loadScripts', scripts, function() { //put inline scripts related to this page here //and clean up some plugin remainings before leaving to another page $('#some-content-area').one('ajaxloadstart', function(e, params) { //cleanup plugin1 //for example for jqGrid: $.jgrid.gridDestroy('#grid_selector'); $('.ui-jqdialog').remove(); //or for some datepicker, etc elements: $('.daterangepicker.dropdown-menu').remove(); //or inline editable $('.editable').editable('destroy'); }) })Note that we need
ajaxloadstart
event only once, thus using "one" instead of "on".
mustache/app/views/assets/scripts/
for more examples.
ajaxloadstart
triggered when new content is requested.
ajaxloaddone
is triggered when ajax content is loadedajaxpostdone
is triggered right after "ajaxloaddone" event in POST requests and you can use e.preventDefault()
to prevent content area from being updatedajaxloadcomplete
is triggered when ajax content is loaded and inserted into domajaxloaderror
is triggered when loading ajax content has failedajaxloadlong
if max_load_wait is specified, this event is triggered when loading ajax has taken too longajaxscriptsloaded
is triggered when loading scripts is finished$('#some-content-area') //or //$(document) .on('ajaxloadstart', function(e, params) { //params.url, params.hash, params.method, params.data are available //for "ajaxpostdone" event params.result is also available which is the response received from making the post request if(params.url == 'something') e.preventDefault(); if(params.hash == 'something') e.preventDefault(); //you can also return "false" from "content_url" function to prevent loading })
head
along with its options:
IE8 is a little slow in completing progress so we exclude it.
loading_overlay
option to 'body', so that transparent overlay covers document body.
loading_icon
to null.
assets/js/ace/ace.js
and look for enableDemoAjax
function
for an example