Я пытаюсь отправить массив объектов [{...}, {...}] в мою базу данных SQL на сервере с помощью ajax POST-запроса на jsp. В Firefox 74 он работает нормально, но при Chrome иногда запрос ajax отправляет пустой набор данных. Запись содержимого params на мою консоль показывает, что переменная создана правильно, но, как мне кажется, данные теряются при вызове. Я посылаю этот звонок 4 раза за 8 минут. Интересно, что первый вызов всегда работает и отправляет полный набор данных. У вас есть идея, что происходит? На JSP я включил фрагмент кода, который должен предотвратить кэширование ответа сервера (см. Это в первых строках кода ниже). Любая помощь приветствуется. Большое спасибо!
Предотвращение кэширования:
response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1
response.setHeader("Pragma", "no-cache"); //HTTP 1.0
response.setDateHeader("Expires", 0); //prevents caching at the proxy server */
Ajax вызов (нажатие следующей страницы направляет пользователя на другую страницу после завершения запроса ajax):
function saveData()
{
tryCount++;
var params = JSON.stringify(allData);
var ajaxReq = new ajaxRequest();
console.log(params);
ajaxReq.open("POST","example.jsp",true);
ajaxReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=utf-8");
ajaxReq.setRequestHeader("whichRequest","SavePracticeSST");
ajaxReq.onreadystatechange = function()
{
if (this.readyState === 4){
if (this.status === 200){
console.log(this.responseText.length);
if (this.responseText.length !== 16){
console.log(this.status);
console.log(this.readyState);
document.getElementById("nextPage").click();
}else if(tryCount <= 15){
saveData();
}else{
document.getElementById("nextPage").click();
}// end of if (this.responseTest !=null)
}//end of if (this.readyState == 4)
}
};//end of request.onreadystatechange
ajaxReq.send(params);
// document.getElementById("nextPage").click();
}//end of saveData()
function ajaxRequest()
{
var ajaxReq;
try{//Firefox, Opera
ajaxReq = new XMLHttpRequest();
}
catch (e){//IE
try{
ajaxReq = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){//IE second attempt
try{
ajaxReq = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
return false;
}
}
}//end of trying to initialize ajaxRequest
return ajaxReq;
}//end of function ajaxRequest