2014-09-30 4 views
0

Я пытаюсь сделать HTTP POST, с помощью AJAX в Javascript (не используя JQuery)XMLHttpRequest POST возвращение пустой responseText

ajax_post = function(aData) { 
    var k, v, xmlhttp; 
    xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open("POST", aData.path, true); 
    xmlhttp.setRequestHeader('Content-Type', 'application/json'); 
    xmlhttp.send(JSON.stringify(aData)); 
    return xmlhttp.responseText; 
}; 

стороне сервера является получение POST и посылает ответ. Я знаю, что ответ нажимает на клиентскую сторону, потому что я тестировал сервер с http://code.google.com/p/chrome-rest-client/, и он отвечает JSON, что сервер отправил, как ожидалось.

Я сваливать весь XMLHttpRequest объект в консоль, но все еще не видит, что мне не хватает:

statusText 
status 0 
response 
responseType 
responseXML null 
responseText 
upload 
XMLHttpRequestUpload {ontimeout: null, onprogress: null, onloadstart: null, onloadend: null, onload: null…} 
withCredentials false 
readyState 1 
timeout 0 
onreadystatechange null 
ontimeout null 
onprogress null 
onloadstart null 
onloadend null 
onload null 
onerror null 
onabort null 
open function open() { [native code] } 
setRequestHeader function setRequestHeader() { [native code] } 
send function send() { [native code] } 
abort function abort() { [native code] } 
getAllResponseHeaders function getAllResponseHeaders() { [native code] } 
getResponseHeader function getResponseHeader() { [native code] } 
overrideMimeType function overrideMimeType() { [native code] } 
UNSENT 0 
OPENED 1 
HEADERS_RECEIVED 2 
LOADING 3 
DONE 4 
addEventListener function addEventListener() { [native code] } 
removeEventListener function removeEventListener() { [native code] } 
dispatchEvent function dispatchEvent() { [native code] } 

Что случилось с просьбой моей стороны почтового клиента?

+0

Вы можете попробовать использовать JQuery Ajax вместо этого. С jQuery ajax вам не нужно беспокоиться об объекте xmlHttp. – Ragnar

+0

Инструменты разработчика браузера (F12) могут помочь отслеживать сетевой запрос и определять, есть ли в тексте текст внутри ответа. Ответ на 200-OK без фактического содержимого остается в силе. – Katana314

+1

нулевой статус и RS1 должны быть первым ключом, но вам нужно изменить true на false или использовать asyn для ожидания ответа responseText – dandavis

ответ

0

Я Понял это

ajax_post = function(aData, aCB) { 
    var xmlhttp; 
    xmlhttp = void 0; 

    // Fallback for IE5/6 
    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } else { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    // Send Request to Server 
    xmlhttp.open("POST", aData.path, true); 

    // Set Header Information specifying what type of data you are sending 
    xmlhttp.setRequestHeader('Content-Type', 'application/json'); 

    // Callback that waits untill request is finished and responce is ready 
    xmlhttp.onreadystatechange = (function(_this) { 
     return function() { 
     // readyState 
     // - 0: request not initialized 
     // - 1: server connection established 
     // - 2: request received 
     // - 3: processing request 
     // - 4: request finished and response is ready 

     // status 
     // - 200: OK 
     if ((aCB != null) && xmlhttp.readyState === 4 && xmlhttp.status === 200) { 
      aCB(xmlhttp.responseText); 
     } 
     // TODO check for xmlhttp.status !== 200 Because error handeling should be done 
     }; 
    })(this); 

    // Sends Request Request Payload 
    xmlhttp.send(JSON.stringify(aData)); 
    }; 

Edit: Добавлено комментариев по запросу

+0

. Было бы полезно, если бы вы могли это объяснить ... –

+0

@RajaAnbazhagan Добавлены комментарии к запросу – CaffeineAddiction

+0

Thank вы. Теперь это ответ, который люди хотели бы отнести к изучению ... –

Смежные вопросы