Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
63
rated 0 times [  70] [ 7]  / answers: 1 / hits: 124820  / 10 Years ago, tue, december 23, 2014, 12:00:00

I am trying to write a JS code that will cancel the btn_submit buttons .onclick event if the given number already exists in the database. I use AJAX to query the DB for the given number and to determine if the should send the data to a .php site which will upload the question. To determine this I need the numOfRows variable's value, but because I set it in AJAX it will stay on 0. The validation() function will finish before my AJAX query finishes and this causes the problem that will always state that the given number does not exist in the DB (numOfRows will always stay on 0).
How can I await the AJAX query's finish before I compare the numOfRows to 0 in my validation() function's ending lines? If the number already exists in the DB, I need to return false to this line:




document.getElementById(btn_submit).onclick = validation;




Thank you!



var textAreaList;
var numOfRows = 0;
var finished = false;

document.getElementById(btn_submit).onclick = validation;

textAreaList = document.getElementsByClassName(text_input);

function validation() {
loadNumRows();

try {
document.getElementById('failure').hidden = true;
}
catch(e) {
console.log(e.message);
}
textAreaList = document.getElementsByClassName(text_input);
var failValidation = false;
for (var i = 0; i < textAreaList.length; i++) {
console.log(textAreaList[i]);
if (textAreaList[i].value == ) {
textAreaList[i].style.border = 2px solid #ff0000;
failValidation = true;
} else {
textAreaList[i].style.border = 2px solid #286C2B;
}
}

return !(failValidation || numOfRows != 0);
}

function loadNumRows(){
$.ajax({
url: 'php/SeeIfNumberExists?number=' + document.getElementById('number_inp').value,
type: GET,
cache: false,
success: function (html) {
numOfRows = parseInt(html);
}
});
}

More From » php

 Answers
11

use of async/await with a transpilers like Babel to get it working in older browsers. You’ll also have to install this Babel preset and polyfill from npm:


npm i -D babel-preset-env babel-polyfill

Then


function getData(ajaxurl) { 
return $.ajax({
url: ajaxurl,
type: 'GET',
});
};

async function test() {
try {
const res = await getData('https://api.icndb.com/jokes/random')
console.log(res)
} catch(err) {
console.log(err);
}
}

test();

or the .then callback is just another way to write the same logic.


getData(ajaxurl).then((res) => {
console.log(res)
});

[#68414] Friday, December 19, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
janjadonb

Total Points: 4
Total Questions: 114
Total Answers: 118

Location: Mali
Member since Fri, Dec 3, 2021
3 Years ago
janjadonb questions
;