diff options
author | Kasper Timm Hansen <kaspth@gmail.com> | 2018-04-01 16:49:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-01 16:49:51 +0200 |
commit | 4b54d2a2a23a3b7b717a89019f6a066fb8da3641 (patch) | |
tree | 1cf8ea8f9a74dc9b9c1202ee3fface3edee0522b | |
parent | 2c56d6324b224f3782c4da5e7ffae528293b09aa (diff) | |
parent | 48e44edfd0a8a7a29aa8fad39638ac0ee5243f42 (diff) | |
download | rails-4b54d2a2a23a3b7b717a89019f6a066fb8da3641.tar.gz rails-4b54d2a2a23a3b7b717a89019f6a066fb8da3641.tar.bz2 rails-4b54d2a2a23a3b7b717a89019f6a066fb8da3641.zip |
Merge pull request #32287 from razh/fix-rails-ujs-html-content
Pass HTML responses as plain-text in rails-ujs
-rw-r--r-- | actionview/app/assets/javascripts/rails-ujs/utils/ajax.coffee | 2 | ||||
-rw-r--r-- | actionview/test/ujs/public/test/call-remote.js | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/actionview/app/assets/javascripts/rails-ujs/utils/ajax.coffee b/actionview/app/assets/javascripts/rails-ujs/utils/ajax.coffee index 2a8f5659e3..cf31c796df 100644 --- a/actionview/app/assets/javascripts/rails-ujs/utils/ajax.coffee +++ b/actionview/app/assets/javascripts/rails-ujs/utils/ajax.coffee @@ -69,7 +69,7 @@ processResponse = (response, type) -> script.nonce = cspNonce() script.text = response document.head.appendChild(script).parentNode.removeChild(script) - else if type.match(/\b(xml|html|svg)\b/) + else if type.match(/\bxml\b/) parser = new DOMParser() type = type.replace(/;.+/, '') # remove something like ';charset=utf-8' try response = parser.parseFromString(response, type) diff --git a/actionview/test/ujs/public/test/call-remote.js b/actionview/test/ujs/public/test/call-remote.js index 5932195363..8a88471982 100644 --- a/actionview/test/ujs/public/test/call-remote.js +++ b/actionview/test/ujs/public/test/call-remote.js @@ -128,6 +128,17 @@ asyncTest('execution of JS code does not modify current DOM', 1, function() { }) }) +asyncTest('HTML content should be plain-text', 1, function() { + buildForm({ method: 'post', 'data-type': 'html' }) + + $('form').append('<input type="text" name="content_type" value="text/html">') + $('form').append('<input type="text" name="content" value="<p>hello</p>">') + + submit(function(e, data, status, xhr) { + ok(data === '<p>hello</ps>', 'returned data should be a plain-text string') + }) +}) + asyncTest('XML document should be parsed', 1, function() { buildForm({ method: 'post', 'data-type': 'html' }) |