Skip to content

Commit 85fab6e

Browse files
Implement SPA xhr for loading new views in the same page/shell - client JS - ref #13
1 parent 7d64a55 commit 85fab6e

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

client-src/js/main.js

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,34 @@
1-
const echo = 'hi';
1+
const makeRequest = (method, url, callback) => {
2+
const xhr = new XMLHttpRequest();
3+
xhr.onreadystatechange = () => {
4+
if (xhr.readyState === 4) {
5+
if (xhr.status === 200) {
6+
callback(null, xhr.responseText);
7+
} else {
8+
callback(new Error('Status Code: ', xhr.status));
9+
}
10+
}
11+
};
212

3-
console.log(echo);
13+
xhr.open(method, url);
14+
xhr.send();
15+
};
16+
17+
const clickLinkListener = (element) => {
18+
element.addEventListener('click', (event) => {
19+
event.preventDefault();
20+
console.log(event);
21+
makeRequest('GET', event.path[0].href, (err, res) => {
22+
if (err) {
23+
console.error(err);
24+
return;
25+
}
26+
document.getElementById('outerContainer').innerHTML = res;
27+
window.history.pushState(null, null, event.path[0].href.split('?ajax=true')[0]);
28+
29+
clickLinkListener(document.getElementById('loadLink'));
30+
});
31+
});
32+
};
33+
34+
clickLinkListener(document.getElementById('loadLink'));

0 commit comments

Comments
 (0)