Bagaimana cara x.vote dan x.mark lebih smooth saat di klik tanpa muat ulang halaman? #286
Answered
by
taufik-nurrohman
yuliakbard
asked this question in
Q&A
-
Seperti yang kita tahu, x.vote dan x.mark ini menggunakan form html. jadi setiap kita click element x.vote atau x.mark pada halaman, akan selalu mereload ulang dan baru muncul data/ hasil dari penggunaan x.vote dan x.mark. Pertanyaan nya, apa ada sampel penggunaan ajax javascript kang? biar lebih smooth lagi dalam post data nya 🙏 |
Beta Was this translation helpful? Give feedback.
Answered by
taufik-nurrohman
Mar 26, 2024
Replies: 1 comment 3 replies
-
Silakan perbarui ekstensi Mark dan Vote. Saya sudah menambahkan atribut (function (forms) {
if (!forms.length) {
return;
}
function onSubmit(e) {
const formData = new FormData(this);
const previousFormElements = this.elements;
const previousID = this.id;
const previousName = this.name;
// Make sure to carry the value of the submit button as well
formData.append(previousName + '[value]', previousFormElements[previousName + '[value]'].value);
fetch(this.action, {
body: formData,
method: 'POST'
}).then(response => response.text()).then(text => {
const parser = new DOMParser;
const document = parser.parseFromString(text, 'text/html');
const currentForm = document.getElementById(previousID);
if (currentForm) {
const currentFormElements = currentForm.elements;
previousFormElements[previousName + '[token]'].value = currentFormElements[previousName + '[token]'].value;
previousFormElements[previousName + '[value]'].innerHTML = currentFormElements[previousName + '[value]'].innerHTML;
previousFormElements[previousName + '[value]'].setAttribute('aria-pressed', currentFormElements[previousName + '[value]'].getAttribute('aria-pressed'));
previousFormElements[previousName + '[value]'].title = currentFormElements[previousName + '[value]'].title;
previousFormElements[previousName + '[value]'].value = currentFormElements[previousName + '[value]'].value;
}
}).catch(console.error);
e.preventDefault();
}
forms.forEach(form => {
if ('vote' === form.name || 'mark' === form.name) {
form.addEventListener('submit', onSubmit);
}
});
})(Array.from(document.forms)); test-2024-03-26_12.09.32.mp4 |
Beta Was this translation helpful? Give feedback.
3 replies
Answer selected by
yuliakbard
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Silakan perbarui ekstensi Mark dan Vote. Saya sudah menambahkan atribut
id
pada semua formulir untuk memudahkan dalam menyeleksi form yang sama di respons AJAX. Lalu terapkan kode ini. Kode ini akan secara otomatis menerapkan fitur AJAX ke semua formulir dengan nilai atributname
sebagaimark
danvote
: