Http код состояния не определен при попытке выполнить вызов POST Sync AJAX - PullRequest
2 голосов
/ 25 июля 2011

Это проблема 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 обрабатывается правильно.

Спасибо

...