XMLHttpRequest отправляет content-type
как HTML
вместо json
и показывает ошибку 404, однако через несколько секунд (тестирование с 15 секундами) начинает работать как положено и начинает отправку данных с типом содержимого json ,
Это происходит как в Firefox, так и в Chrome.
Однако это работает, когда я отправляю тот же запрос по replay XHR
или edit and replay
в chrome или firefox соответственно.
вот мои коды.
Получение объекта XMLHTTPRequest
//Browser Support Code
function ajaxobj() {
var ajaxRequest;
// The variable that makes Ajax possible!
try {
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer Browsers
try {
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
// Something went wrong
//alert("Your browser broke!");
return false;
}
}
}
return ajaxRequest;
}
Функция отправки данных на сервер.
var serverData = "localhost";
// A function to send the JSON data to the server
function ajaxInit(urlId, query) {
// getting and setting the ajaxRequest object
var ajaxRequest = ajaxobj();
ajaxRequest.onreadystatechange = function () {
if (ajaxRequest.readyState == 4) {
if (ajaxRequest.status == 200) {
console.log("Response got from server : ",ajaxRequest.responseText);
try{
var mainResponse = JSON.parse(ajaxRequest.responseText);
ajaxResponse(mainResponse);
}
catch(e){
console.log("There has been an error on the server. Please try again later!!!")
}
}
else
errorCallback(ajaxRequest.status);
}
}
var serverData = {};
serverData.data = [];
// settin the url ID as the server ID in the data
query.type = urlId;
serverData.data.push(query);
ajaxRequest.open("POST", serverPage, true);
ajaxRequest.setRequestHeader("Content-type", "application/json;charset=UTF-8");
ajaxRequest.send(JSON.stringify(serverData));
//console.log(JSON.stringify(serverData));
}
Отправка данных на сервер.
// sending on page load
// didnt worked 404 error
ajaxInit("index", formData);
// sending after 3 seconds.
// didn't worked 404 error
setTimeout(() => {
ajaxInit("index", formData);
},3000);
// sending after 15 seconds.
// luckily this workd
setTimeout(() => {
ajaxInit("index", formData);
},15000);