01.
<div id=
"saved-result-text"
style=
"display:none;"
>
02.
saved result: <span id=
"saved-result"
></span>
03.
</div>
04.
05.
<form id=
"saveForm"
method=
"post"
>
06.
<input id=
"name"
type=
"text"
name=
"name"
value=
""
maxlength=
"50"
>
07.
<br>
08.
<button type=
"submit"
onclick=
"return ajaxSave();"
>Save</button>
09.
</form>
10.
<p>Normal JS save/display.</p>
11.
12.
13.
<script>
14.
function
ajaxSave() {
15.
let formData =
new
FormData(document.getElementById(
'saveForm'
));
16.
let xhr =
new
XMLHttpRequest();
17.
18.
xhr.onreadystatechange =
function
() {
19.
if
(this.readyState == 4 && this.status == 200) {
20.
let response = JSON.parse(this.response);
21.
if
(response.saved === true) {
22.
window.location.reload();
23.
}
24.
}
25.
};
26.
27.
xhr.open(
'POST'
,
'save.php'
);
28.
xhr.send(formData);
29.
30.
return
false;
31.
}
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
function
decodeEntities(encodedString) {
46.
var
translate_re = /&(nbsp|amp|quot|lt|gt);/g;
47.
var
translate = {
48.
"nbsp"
:
" "
,
49.
"amp"
:
"&"
,
50.
"quot"
:
"\""
,
51.
"lt"
:
"<"
,
52.
"gt"
:
">"
53.
};
54.
return
encodedString.replace(translate_re,
function
(match, entity) {
55.
return
translate[entity];
56.
}).replace(/&#(\d+);/gi,
function
(match, numStr) {
57.
var
num = parseInt(numStr, 10);
58.
return
String.fromCharCode(num);
59.
});
60.
}
61.
62.
63.
64.
65.
66.
document.addEventListener(
'DOMContentLoaded'
,
function
() {
67.
let xhr =
new
XMLHttpRequest();
68.
69.
xhr.onreadystatechange =
function
() {
70.
if
(this.readyState == 4 && this.status == 200) {
71.
let response = JSON.parse(this.response);
72.
if
(response && response.name) {
73.
document.getElementById(
'saved-result-text'
).style =
''
;
74.
document.getElementById(
'saved-result'
).innerHTML = response.name;
75.
76.
document.getElementById(
'name'
).value = decodeEntities(response.name);
77.
}
78.
}
79.
};
80.
81.
xhr.open(
'GET'
,
'save.php'
);
82.
xhr.send();
83.
84.
return
false;
85.
}, false);
86.
</script>