-------------- オフィシャルサイトスタート
-------------- 公式サイト終了
渡すデータをクエリー文字列に変換することができます。 私はこれを再帰的に以下のコードで行いました。
const doParams = (data, params, prefix) => {
if (!params) {
return;
}
data = data || '';
prefix = prefix || '';
if ('[object Object]' == Object.prototype.toString.call(params)) {
for (let objName in params) {
if (null == params[objName] || undefined == params[objName] || 'createTime' == objName || 'updateTime' == objName) {
continue;
}
if (typeof params[objName] != 'object') {
let tmpObjName = parseInt(objName);
if (isNaN(tmpObjName)) {
data += '&' + encodeURIComponent(prefix + (prefix ? '.' : '') + objName) + '=' + encodeURIComponent(params[objName]);
} else {
data += '&' + encodeURIComponent(prefix + (prefix && 0 <= prefix.indexOf('.') ? '[' + objName + ']' : '')) + '=' + encodeURIComponent(params[objName]);
}
} else {
let tmpObjName = parseInt(objName);
if (isNaN(tmpObjName)) {
data += '&' + doParams('', params[objName], prefix + (prefix ? '.' : '') + objName);
} else {
data += '&' + doParams('', params[objName], prefix + (prefix ? '[' + objName + ']' : ''));
}
}
}
} else if ('[object Array]' == Object.prototype.toString.call(params)) {
for (let i = 0; i < params.length; i++) {
if (!params[i]) {
continue;
}
if (typeof params[i] != 'object') {
data += '&' + encodeURIComponent(prefix + (prefix && 0 <= prefix.indexOf('.') ? '[' + i + ']' : '')) + '=' + encodeURIComponent(params[i]);
} else {
data += '&' + doParams('', params[i], prefix + (prefix ? '[' + i + ']' : ''))
}
}
} else {
data += '&' + encodeURIComponent(prefix) + '=' + encodeURIComponent(params);
}
if(data.indexOf('&') == 0) {
data = data.substring(1, data.length);
}
return data;
};
params はバックエンドに渡されるパラメータです。
let queryStr = doParams('', params);
let header = {'content-type': 'application/x-www-form-urlencoded'};
wx.request({
method: 'POST',
url, //バックエンドのURL,
data: queryStr || '',
header,
success: (res) => {
},
fail: (data) => {
},
complete: () => {
}
});