asker
asker
  • 发布:2015-04-16 17:36
  • 更新:2018-12-05 10:37
  • 阅读:2741

mui.fire跳转后iOS无法取值, 安卓正常.

分类:MUI

主要代码如下, page1传值到details, 但是iOS无法在console.log(JSON.stringify(data))显示api内容.,能否帮忙看看.
安卓正常.

page1.html

mui('#content').on('tap', 'a', function(){  
            if (subWebview == null) {  
                //获取共用父窗体  
                template = plus.webview.getWebviewById("default-main");  
            }  
            if(template){  
                subWebview = template.children()[0];  
                subWebview.loadURL('details.html');  
                mui.fire(template, 'updateHeader', {  
                    title: '剧集',  
                    showMenu: false  
                });  
                mui.fire(subWebview, 'updateInfo', {  
                    id: this.getAttribute('uid')  
                });  
                template.show('slide-in-right', 150);  
            }  
            return false;  
        });

details.html

window.addEventListener("updateInfo", function(e) {  
            document.getElementById('a').innerHTML = '<div class="mui-loading"><div class="mui-spinner"></div></div>';  
            document.getElementById('b').innerHTML = '<div class="mui-loading"><div class="mui-spinner"></div></div>';  
            document.getElementById('c').innerText = '';  
            document.getElementById('d').innerText = '';  
            id = e.detail.id;  
            mui.toast('Loading...');  
            mui.post(host + 'File/Do, 'id=' + id + '&key=' + plus.storage.getItem('getKeyID'),      function(data) {          
                console.log(JSON.stringify(data));  
//处理过程  
......  
            }  
......
2015-04-16 17:36 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

你这个data是ajax返回的啊。传值是id。

现在的问题是

1.确认id传过去没有?
2.如果id传过去,说明是ajax的问题。你服务端返回的编码是什么?

  • asker (作者)


    1. Id肯定传过去了, 因为安卓能正常读取到数据, 而iOS无法读取到.

    2. ajax的问题你是说哪一行会出现这个异常? 是post还是conssole.log?

    2015-04-16 17:47

  • asker (作者)

    我在console.log(JSON.stringify(data));前面加上console.log("ajax"); 控制台也无法打印出这个ajax文字, 应该是这个function无法运行, 请问, 这个是什么原因导致的.

    2015-04-16 17:53

  • DCloud_UNI_FXY

    你服务端返回的编码是什么?

    2015-04-16 17:56

  • asker (作者)

    {"code":1,"msg":"success"} 标准模式下会这样, 后面数据, 但是iOS就是没有执行function这个函数.

    2015-04-16 18:54

  • DCloud_UNI_FXY

    我指的是编码,utf-8,还是gbk之类的。你可以用mui.ajax,使用error回调。打印看看是什么错误

    2015-04-16 19:53

  • asker (作者)

    好的, 我再试试看, 多谢解答, 如果有以为我在回复下. 谢谢.

    2015-04-16 21:17

飞龙andy

飞龙andy

@DCloud_MUI_FXY

我也遇到这个问题,打开app,第一次是接受不到传值的,第二次打开就可以了,是不是ios的bug呢?

  • DCloud_UNI_FXY

    猜测是代码问题。如果用fire传值时,务必保证两个webview都loaded了。

    2015-08-07 17:13

  • 飞龙andy

    回复 DCloud_UNI_FXY:确认两个webview都加载完成了,奇怪的是即使子webview和父webview用一样的window.addEventListener,子webview第一次还是无法接收到传值

    2015-08-07 17:57

  • h小明

    回复 飞龙andy:解决了吗?我也遇到这个问题,安卓没问题 ios第一次会出现,感觉是bug

    2015-08-27 13:29

  • 飞龙andy

    回复 h小明:没有解决~后来我用“plus.storage.setItem("dpid",id)”赋值,然后在详情页面获取来传值的,两个平台都可以用,可能是没有预加载的原因,打开速度可能受限了

    2015-09-02 20:10

近水楼台

近水楼台

同样遇见这种问题了...mark

近水楼台

近水楼台

已解决:
监听:

contentWebview.addEventListener('loaded',function(){  
       mui.fire(contentWebview, 'updateVeh', {vehicle:veh});  
});

http://ask.dcloud.net.cn/question/3556?item_id=19153&rf=false

8***@qq.com

8***@qq.com

var toOrder = plus.webview.create('affirmOrder.html?invoiceState=' + invoiceState, 'affirmOrder.html');
toOrder.addEventListener("loading", function(){
mui.fire(toOrder, 'bookList', {
id: id,
product: "product"
});
plus.nativeUI.showWaiting();
setTimeout(function(){
plus.nativeUI.closeWaiting();
plus.webview.show(toOrder, "slide-in-right", 600);

                        }, 1000);  
                    });  

跳转后的页面监听不到@DCloud_MUI_FXY

该问题目前已经被锁定, 无法添加新回复