#426 make array-to-querystring serialization work like jquery
This commit is contained in:
parent
028425ca08
commit
6c77586616
3 changed files with 14 additions and 1 deletions
|
|
@ -9,6 +9,7 @@
|
||||||
### Bug Fixes:
|
### Bug Fixes:
|
||||||
|
|
||||||
- prevent empty class attributes [#382](https://github.com/lhorie/mithril.js/issues/382)
|
- prevent empty class attributes [#382](https://github.com/lhorie/mithril.js/issues/382)
|
||||||
|
- array-to-querystring serialization in `m.request` now behaves like jQuery [#426](https://github.com/lhorie/mithril.js/issues/426)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -684,10 +684,17 @@ var m = (function app(window, undefined) {
|
||||||
var str = [];
|
var str = [];
|
||||||
for(var prop in object) {
|
for(var prop in object) {
|
||||||
var key = prefix ? prefix + "[" + prop + "]" : prop, value = object[prop];
|
var key = prefix ? prefix + "[" + prop + "]" : prop, value = object[prop];
|
||||||
str.push(value != null && type.call(value) === OBJECT ? buildQueryString(value, key) : encodeURIComponent(key) + "=" + encodeURIComponent(value))
|
var valueType = type.call(value)
|
||||||
|
var pair = value != null && (valueType === OBJECT) ?
|
||||||
|
buildQueryString(value, key) :
|
||||||
|
valueType === ARRAY ?
|
||||||
|
value.map(function(item) {return encodeURIComponent(key) + "=" + encodeURIComponent(item)}).join("&") :
|
||||||
|
encodeURIComponent(key) + "=" + encodeURIComponent(value)
|
||||||
|
str.push(pair)
|
||||||
}
|
}
|
||||||
return str.join("&")
|
return str.join("&")
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseQueryString(str) {
|
function parseQueryString(str) {
|
||||||
var pairs = str.split("&"), params = {};
|
var pairs = str.split("&"), params = {};
|
||||||
for (var i = 0, len = pairs.length; i < len; i++) {
|
for (var i = 0, len = pairs.length; i < len; i++) {
|
||||||
|
|
|
||||||
|
|
@ -1781,6 +1781,11 @@ function testMithril(mock) {
|
||||||
mock.XMLHttpRequest.$instances.pop().onreadystatechange()
|
mock.XMLHttpRequest.$instances.pop().onreadystatechange()
|
||||||
return prop().url === "test"
|
return prop().url === "test"
|
||||||
})
|
})
|
||||||
|
test(function() {
|
||||||
|
var prop = m.request({method: "GET", url: "test", data: {foo: [1, 2]}})
|
||||||
|
mock.XMLHttpRequest.$instances.pop().onreadystatechange()
|
||||||
|
return prop().url === "test?foo=1&foo=2"
|
||||||
|
})
|
||||||
|
|
||||||
// m.request over jsonp
|
// m.request over jsonp
|
||||||
test(function(){
|
test(function(){
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue