auto-send Content-Type header if using JSON.stringify as serialize in m.request
This commit is contained in:
parent
6bca818f34
commit
f46b8c9238
3 changed files with 16 additions and 2 deletions
|
|
@ -561,6 +561,9 @@ Mithril = m = new function app(window) {
|
||||||
else options.onerror({type: "error", target: xhr})
|
else options.onerror({type: "error", target: xhr})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (options.serialize == JSON.stringify && options.method != "GET") {
|
||||||
|
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
|
||||||
|
}
|
||||||
if (typeof options.config == "function") {
|
if (typeof options.config == "function") {
|
||||||
var maybeXhr = options.config(xhr, options)
|
var maybeXhr = options.config(xhr, options)
|
||||||
if (maybeXhr !== undefined) xhr = maybeXhr
|
if (maybeXhr !== undefined) xhr = maybeXhr
|
||||||
|
|
@ -592,8 +595,8 @@ Mithril = m = new function app(window) {
|
||||||
m.request = function(xhrOptions) {
|
m.request = function(xhrOptions) {
|
||||||
if (xhrOptions.background !== true) m.startComputation()
|
if (xhrOptions.background !== true) m.startComputation()
|
||||||
var deferred = m.deferred()
|
var deferred = m.deferred()
|
||||||
var serialize = xhrOptions.serialize || JSON.stringify
|
var serialize = xhrOptions.serialize = xhrOptions.serialize || JSON.stringify
|
||||||
var deserialize = xhrOptions.deserialize || JSON.parse
|
var deserialize = xhrOptions.deserialize = xhrOptions.deserialize || JSON.parse
|
||||||
var extract = xhrOptions.extract || function(xhr) {
|
var extract = xhrOptions.extract || function(xhr) {
|
||||||
return xhr.responseText.length === 0 && deserialize === JSON.parse ? null : xhr.responseText
|
return xhr.responseText.length === 0 && deserialize === JSON.parse ? null : xhr.responseText
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1211,6 +1211,13 @@ function testMithril(mock) {
|
||||||
m.endComputation()
|
m.endComputation()
|
||||||
return prop() === undefined && error() === "no error" && exception.message == "error occurred"
|
return prop() === undefined && error() === "no error" && exception.message == "error occurred"
|
||||||
})
|
})
|
||||||
|
test(function() {
|
||||||
|
var error = m.prop("no error")
|
||||||
|
var prop = m.request({method: "POST", url: "test"}).then(null, error)
|
||||||
|
var xhr = mock.XMLHttpRequest.$instances.pop()
|
||||||
|
xhr.onreadystatechange()
|
||||||
|
return xhr.$headers["Content-Type"] == "application/json; charset=utf-8"
|
||||||
|
})
|
||||||
|
|
||||||
//m.deferred
|
//m.deferred
|
||||||
test(function() {
|
test(function() {
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,10 @@ mock.window = new function() {
|
||||||
}
|
}
|
||||||
window.XMLHttpRequest = new function() {
|
window.XMLHttpRequest = new function() {
|
||||||
var request = function() {
|
var request = function() {
|
||||||
|
this.$headers = {}
|
||||||
|
this.setRequestHeader = function(key, value) {
|
||||||
|
this.$headers[key] = value
|
||||||
|
}
|
||||||
this.open = function(method, url) {
|
this.open = function(method, url) {
|
||||||
this.method = method
|
this.method = method
|
||||||
this.url = url
|
this.url = url
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue