/
index.html
129 lines (102 loc) · 3.13 KB
/
index.html
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<button id="btn-send">Click</button>
<body>
<script type="text/javascript">
document.getElementById("btn-send").addEventListener("click", function() {
document.getElementById("btn-send").setAttribute("disabled", true);
var emails = popFields();
var emailsLength = emails.length;
var arrAux = [];
var lastIndex = 0;
for(var i = 0; i < emailsLength; i++){
//Avoid Undefined(2)
if(arrAux[lastIndex] == null){
arrAux[lastIndex] = [];
}
if(arrAux[lastIndex].length < 2500){
arrAux[lastIndex].push(emails[i]);
} else {
lastIndex++;
//Avoid Undefined(2)
if(arrAux[lastIndex] == null){
arrAux[lastIndex] = [];
}
arrAux[lastIndex].push(emails[i]);
}
}
//Exemplo de Debug
//console.log('x->', decodeURIComponent(arrAux[0][2499]));
//console.log('x->', decodeURIComponent(arrAux[1][2499]));
//Qnt de Ajax recursivos
ajaxToDo = [];
for(x in arrAux){
ajaxToDo.push({
url : 'recebe.php'
,data : arrAux[x].join("&")
});
}
return recursiveAjax(ajaxToDo);
});
/*
@ajaxToDo Recebe um array de *Objetos, que assim que receber a resposta chama o proximo *Objeto do array/fila
Exemplo do Object:
url : 'URL TO SEND'
data : "DATA JÁ PRONTA PARA O POST: EX: 'nome=gabriel&opcao=2'"
*/
function recursiveAjax(ajaxToDo){
var ajax = new XMLHttpRequest();
var url = ajaxToDo[ajaxToDo.length - 1]['url'];
console.log('Chamando a URL:' + url + ' ' + (ajaxToDo.length - 1));
ajax.onreadystatechange = function() {
if (ajax.readyState == XMLHttpRequest.DONE ) {
if (ajax.status == 200) {
//SUCCESS OR FAIL?!
console.log(ajax.responseText);
ajaxToDo.pop();
if(ajaxToDo.length > 0){
recursiveAjax(ajaxToDo);
} else {
//End Animation...
document.getElementById("btn-send").removeAttribute("disabled");
}
} else {
//Avoid Infite Loop
ajaxToDo.pop();
}
}
};
ajax.open('POST', url, true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
ajax.setRequestHeader("X-Requested-With", "XMLHttpRequest");
var dataToSend = ajaxToDo[ajaxToDo.length - 1]['data'];
ajax.send(dataToSend);
}
function popFields(){
//Vamos simular os E-mails....
var inputEmails = [];
//Testes de Stress..
//for(var i = 1; i <=2500;i++){
//for(var i = 1; i <=5001;i++){
for(var i = 1; i <=20000;i++){
inputEmails.push({
name : 'm[]'
,value : 'e'+ i +'@tk.br'
});
}
var emailsToSend = [];
for (var i = 0; i < inputEmails.length; i++) {
var auxLoop = inputEmails[i].name + '=' + encodeURIComponent(inputEmails[i].value);
emailsToSend.push(auxLoop);
}
//var data = emailsToSend.join("&"); // Ainda não.. pois quem da o join é a propria requisição do Ajax...
//return myCallback(emailsToSend);
return emailsToSend;
}
</script>
</body>
</html>