坑爹, 电脑怎么写都 OK 到手机就不行了。

2015-10-20 10:32:50 +08:00
 Roope

二次开发某平台,要加一些功能, 今天遇到个大坑, 我用 ajax 提交后,电脑模拟手机浏览器,成功,到手机提示 undefined 。 返回的是 JSON 。

header('Content-type:application/json;charset=UTF-8');
exit(json_encode(['resCode' => 'success', 'msg' => $data['msg']));

然后用 Ajax 请求

$.ajax({
    url : "http://xxx/shop/index.php",
    type: "POST",
    data : {
        act:'pointvoucher',
        op:'voucherexchange_save',
        vid:vid,
        from:'phone'
    },
    success:function(results) {
        if(results.resCode === 'success') {
            alert('领取成功。');
        } else {
            alert(results.msg);
        }
    }
});

按理来说是没有问题的,在电脑用好几个浏览器模拟都是成功的,但是到手机用了好几个浏览器都不行,都提示 undefined 。 第一次遇到这样的问题,搞了半天都不知道原因,求教。

手机: UC 最新版,猎豹,手机自带的 android 4.4

2477 次点击
所在节点    PHP
7 条回复
laoona
2015-10-20 10:58:34 +08:00
打印一下 results ,看看是什么。最好加个:$.ajax({dataType: "json"});
cxe2v
2015-10-20 11:08:01 +08:00
服务器端把收到的请求打印出来对比一下模拟器跟真机的区别不就知道了
Roope
2015-10-20 11:17:43 +08:00
@laoona
@cxe2v 多谢已经搞定了,因为框架的原因我从手机发的 Ajax 请求过去, PC 用的 Controller 把 SESSION 清空了,不知道为什么。
domty
2015-10-20 11:18:17 +08:00
1.alert 整个 results ,看看怎么回事
2.换个浏览器试结果,从我仅有的 uc 调试经历来看, uc 的东西比较烂,用起来很麻烦
wesley
2015-10-20 11:38:06 +08:00
uc 会把数据从服务器中转, session 肯定没了
qaulau
2015-10-20 12:51:40 +08:00
你需要将 result 这个 json 字符串转换为 js 对象,加上 datatype:"json"或者使用$.parseJSON()
Roope
2015-10-20 13:26:28 +08:00
@qaulau 之前用过了,不行的,因为不知道为啥 Session 没了,所以导致失败的。

@wesley 有点坑

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/229438

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX