<!DOCTYPE html> <meta charset="utf-8"> <title>XMLHttpRequest.responseType</title> <link rel="author" title="Mathias Bynens" href="http://mathiasbynens.be/"> <link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com"> <link rel="help" href="https://xhr.spec.whatwg.org/#the-responsetype-attribute"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <div id="log"></div> <script> test(function() { var xhr = new XMLHttpRequest(); assert_equals(xhr.responseType, ''); }, 'Initial value of responseType'); var types = ['', 'json', 'document', 'arraybuffer', 'blob', 'text']; types.forEach(function(type) { test(function() { var xhr = new XMLHttpRequest(); xhr.responseType = type; assert_equals(xhr.responseType, type); }, 'Set responseType to ' + format_value(type) + ' when readyState is UNSENT.'); test(function() { var xhr = new XMLHttpRequest(); xhr.open('get', '/'); xhr.responseType = type; assert_equals(xhr.responseType, type); }, 'Set responseType to ' + format_value(type) + ' when readyState is OPENED.'); async_test(function() { var xhr = new XMLHttpRequest(); xhr.open('get', '/'); xhr.onreadystatechange = this.step_func(function() { if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) { xhr.responseType = type; assert_equals(xhr.responseType, type); this.done(); } }); xhr.send(); }, 'Set responseType to ' + format_value(type) + ' when readyState is HEADERS_RECEIVED.'); async_test(function() { var xhr = new XMLHttpRequest(); xhr.open('get', '/'); xhr.onreadystatechange = this.step_func(function() { if (xhr.readyState === XMLHttpRequest.LOADING) { assert_throws("InvalidStateError", function() { xhr.responseType = type; }); assert_equals(xhr.responseType, ""); this.done(); } }); xhr.send(); }, 'Set responseType to ' + format_value(type) + ' when readyState is LOADING.'); async_test(function() { var xhr = new XMLHttpRequest(); xhr.open('get', '/'); xhr.onreadystatechange = this.step_func(function() { if (xhr.readyState === XMLHttpRequest.DONE) { assert_throws("InvalidStateError", function() { xhr.responseType = type; }); assert_equals(xhr.responseType, ""); this.done(); } }); xhr.send(); }, 'Set responseType to ' + format_value(type) + ' when readyState is DONE.'); // Note: the case of setting responseType first, and then calling synchronous // open(), is tested in open-method-responsetype-set-sync.htm. test(function() { var xhr = new XMLHttpRequest(); xhr.open('get', '/', false); assert_throws("InvalidAccessError", function() { xhr.responseType = type; }); assert_equals(xhr.responseType, ""); }, 'Set responseType to ' + format_value(type) + ' when readyState is OPENED and the sync flag is set.'); test(function() { var xhr = new XMLHttpRequest(); xhr.open('get', '/', false); xhr.send(); assert_equals(xhr.readyState, XMLHttpRequest.DONE); assert_throws("InvalidStateError", function() { xhr.responseType = type; }); assert_equals(xhr.responseType, ""); }, 'Set responseType to ' + format_value(type) + ' when readyState is DONE and the sync flag is set.'); }); </script>