aboutsummaryrefslogtreecommitdiffstats
path: root/actionview
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2018-04-01 16:49:51 +0200
committerGitHub <noreply@github.com>2018-04-01 16:49:51 +0200
commit4b54d2a2a23a3b7b717a89019f6a066fb8da3641 (patch)
tree1cf8ea8f9a74dc9b9c1202ee3fface3edee0522b /actionview
parent2c56d6324b224f3782c4da5e7ffae528293b09aa (diff)
parent48e44edfd0a8a7a29aa8fad39638ac0ee5243f42 (diff)
downloadrails-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
Diffstat (limited to 'actionview')
-rw-r--r--actionview/app/assets/javascripts/rails-ujs/utils/ajax.coffee2
-rw-r--r--actionview/test/ujs/public/test/call-remote.js11
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' })