Это проблема javascript, связанная с пост-запросом в режиме синхронизации.
Проблема
Код
У меня есть следующие функции javascript:
/**
* Used to connect async to a server and send data using POST HTTP.
*/
function sendDataOverHttpPost(data, url, func, errfunc) {
var http = new XMLHttpRequest();
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", data.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
func(http.responseText);
} else {
errfunc({"name": "XMLHttpRequest error", "message": "Could not perform activity", "code": http.status, "line": "", "expressionBeginOffset": "", "expressionEndOffset": "", "sourceId": "", "sourceURL": ""});
}
};
http.send(data);
}
/**
* Used to connect sync to a server and send data using POST HTTP.
*/
function sendDataOverHttpPostSync(data, url, func, errfunc) {
var http = new XMLHttpRequest();
http.open("POST", url, false);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", data.length);
http.setRequestHeader("Connection", "close");
http.send(data);
/* Res handling */
if (http.status == 200) {
func(http.responseText);
} else {
errfunc({"name": "XMLHttpRequest SYNC error", "message": "Could not perform activity", "code": http.status, "line": "", "expressionBeginOffset": "", "expressionEndOffset": "", "sourceId": "", "sourceURL": ""});
}
/* Res handling end */
}
Вопрос
Хорошо.При вызове первой функции, асинхронной, все ок.Проблема вторая (SYNC).После отправки данных я всегда получаю undefined
в http.status
Возможные проблемы
Почему это происходит?Является ли это проблемой набора заголовков, потому что я знаю, что при выполнении пост-запросов необходимо указывать правильные заголовки (с этой проблемой я столкнулся в ASYNC POST, если отсутствующие заголовки, указанные в коде, ответ не получился).
Однако учтите, что адрес правильно вызывается и на стороне сервера все идет хорошо, поэтому запрос ajax обрабатывается правильно.
Спасибо