プレーンな Javascript ajax で可能です。リクエストが完了する前にデータが受信されると、イベントは 3 で発生しますonreadystatechange
。readyState
以下の例でnewData
は、新しいデータが含まれます。XHR は実際にはこれまでのデータ全体を提供するため、何らかの処理を行う必要があります。したがってresponseText
、新しいデータのみを知りたい場合は、最後のインデックスの記録を保持する必要があります。
var httpRequest, lastIndex = 0;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
httpRequest.onreadystatechange = function() {
if(httpRequest.readyState === 3) {
var newData = httpRequest.responseText.substring(lastIndex);
lastIndex = httpRequest.responseText.length;
console.log(newData);
}
};
httpRequest.open('POST', '/file.php');
httpRequest.send('action=send');
jQuery ajax に関しては、この回答は jQuery でバインドできることを示唆していますreadystatechange
が、テストしていません。