[AJAX] Captcha, JS qui va trop vite
Bonjour,
J'ai réalisé une Captcha en Ajax et Javascript.
Avec une série de alert, j'ai pu comprendre que Javascript allait trop vite par rapport a mon Ajax, et j'aurais voulu trouver un moyen de "freiner" JS. Voici mon Code :
captcha.js
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| // CREATING THE REQUEST
function createRequestObject()
{
try
{
xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
alert('Sorry, but your browser doesn\'t support XMLHttpRequest.');
}
return xmlhttp;
}
var http = createRequestObject();
var sess = createRequestObject();
// IMAGE REFRESHING
function refreshimg()
{
var url = 'class/captcha/image_req.php';
dorefresh(url, displayimg);
}
function dorefresh(url, callback)
{
sess.open('POST', 'class/captcha/newsession.php', true);
sess.send(null);
http.open('POST', url, true);
http.onreadystatechange = callback;
http.send(null);
}
function displayimg()
{
if(http.readyState == 4)
{
var showimage = http.responseText;
document.getElementById('captchaimage').innerHTML = showimage;
}
}
// SUBMISSION
var capt;
function check()
{
var submission = document.getElementById('captcha').value;
var url = 'class/captcha/process.php?captcha=' + submission;
this.docheck(url, displaycheck);
cfr = capt;
return cfr;
}
function docheck(url, callback)
{
http.onreadystatechange = callback;
http.open('GET', url, true);
http.send(null);
return false;
}
function displaycheck()
{
try
{
if((http != null) && (http.readyState == 4))
{
if (http.status == 200)
{
if(http.responseText == 1)
{
capt = 1;
document.getElementById('captcha').className = 'right_element';
return true;
}
else
{
capt = 0;
document.getElementById('captcha').className = 'wrong_element';
return true;
}
}
}
else
{
return true;
}
}
catch(e)
{
alert(e);
}
} |
Et la vérification de mon formulaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| function frm_comment()
{
var form = true;
var ce = check();
if (trim(document.forms["frm"].elements["captcha"].value) == "")
{
document.getElementById('captcha').className = 'wrong_element';
form = false;
}
else
{
alert(ce);
if (ce != 1)
{
form = false;
}
}
return form;
} |
Merci de votre aide.
Cordialement