经过浏览器分析返现返回头是和其他正常的地址是一样的,
但是微信小程序返回的却不是json object对象,结果我徒手写一个解析简单json str的,但是希望官方希望解决这个问题,这个奇葩的问题根本看不出规律,在电脑上测试有时候是可以看到 返回的是json的,
总之找不到规律。
我贴下地址。
https://www.huluboshi.com/wxpro/wxpay/pay_ok.php?order_no=34293_201612131532581584&userid=34293
如果你直接用电脑测试 这个地址发现返回的是 json, 但是我记得之前弄另外一个小程序的时候,电脑不管怎么方法,都始终无法返回json,不管我设置了微信小程序的头编码 还是服务器那边设置,。。但是更奇葩的是 其他地方都正常唯独有些文件不正常。
这些情况通常发生在我们服务器 登录 ,支付 的地址- - 这坑的。
另外post提交也有这样的问题。
经过测试发现
如果微信小程序返回的是json字符串 如果要 JSON.parse()解析的话
则需要 把里面的双引号进行转义.
安卓手机测试发现我上面的地址 返回的是 字符串,[不管有没有写header 不过服务器的返回头确实是json的而且和其他地址无区别 其他地址却可以正常解析,百思不得其解 是不是 里面包含某些符号导致 微信小程序api在安卓那边抽风了?]
header: {
'content-type': 'application/json'
},
wx.request({
url: 'https://www.huluboshi.com/wxpro/wxpay/pay_ok.php?order_no=34293_201612131532581584&userid=34293',
data: {},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
// header: {}, // 设置请求的 header
header: {
'content-type': 'application/json'
},
success: function (res) {
// success
console.debug("succ", res);
wx.request({
url:
'https://www.huluboshi.com/wxpro/wxpay/pay_ok.php?order_no=34293_201612131532581584&userid=34293'
,
data: {},
method:
'GET'
, // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
// header: {}, // 设置请求的 header
header: {
'content-type'
:
'application/json'
},
success: function (res) {console.debug(
"result"
,res);}
写不写在header, 电脑window测试可以,在安卓都返回的是字符串
而电脑测试返回的是json. 手机上
服务器返回的确实是json头
而我这边暂时没有申明返回头。
解决方法就是转义双引号 然后用JSON.parse 或者
徒手写一个简单的json协议,这个地址的解析还是比较容易解析的。
收回我4楼的话,我手写写错了。
console.debug("parse", JSON.parse("{\"value\":\"1\"}"));
那估计是服务器返回的 有点毛病了。
我再测测等下发下测试结果 和解决办法。
那个方法是不是解析有特别的要求,我上个月遇到这个问题 反复测试都出错,当时没看明白是不支持这个函数还是解析出现毛病了。
现在测试了一把 可是可以
但是发现
我申明的可以 用内置函数把他变成字符串然后再变成json可以。但是我手写的就出现解析错误了。
var json = { value: 1, key: 'fff' };
var str = JSON.stringify(json);
console.debug("json str", str);
console.debug("parse", JSON.parse(str));
console.debug("parse", JSON.parse("{\"value\",\"1\}"));
1楼说的content-type说法不成立,服务器那边设置了输出头信息,其他地址设不设置都正常呢。
小程序支持 JSON.parse(string);
可以正常将字符串转Json对象
当前是有bug,要content-type用小写,且POST要用大写,后续版本会修复。