jquery mobile collapsible和galaxy tab 10.1 json响应给出了随机响应

时间:2012-12-11 22:05:20

标签: ajax json jquery jquery-mobile collapsable

对于jquery移动而言相当新,以及解析json的新手 - 做了大量的研究无济于事。 在settimeout函数中尝试了10秒延迟

我的应用程序在我的三星Galaxy s2上正常工作,但在我的三星Galaxy平板电脑10.1上,它可以做到以下几点。

使用最新的jquery 1.2.0jquery-1.7.2

我呼叫getlocations2.php如果我返回四个或更少的项目,可折叠集合会正确打开和关闭。如果我退回5件或更多物品:

  1. 我点击顶部可折叠以展开它 - 没有任何反应
  2. 我点击第二个可折叠的h3,它首先打开可折叠的
  3. 之后它可以随机重新扩展h3,但通常它是最后一个触摸并且无法打开的h3。
  4. 它可以在短时间内正常工作。
  5. 感谢您的任何提示:

    代码:

    function doajax2($vurl,$vdata,$vtype,$vfrom){   
        $.ajax({
            url: $vurl,
            dataType: 'json',
            data:$vdata,
            async: false,
            success: function(rtndata) {
                $.mobile.hidePageLoadingMsg(); //alert(result.toSource())   
                rtndata2=(JSON.stringify(rtndata, null, 4));
                rtndata2=rtndata2.substring(13);
                rtndata2=rtndata2.slice(0, -2)
    
                var res = eval(rtndata2);           
                $('.displaylocations').html('');    
                g_html=res[0].brand;
    
                if (res[0].id> -1){
                    g_html=g_html+'<div data-role="collapsible-set" data-theme="f" >';
                    for (var i=0;i<res.length;i++){
                    //for (var i=0;i<6;i++){            
                        lochtml('loc',i,res[i].locid,res[i].loccode1,res[i].head,res[i].desc,res[i].lang,res[i].lat1,res[i].long1,res[i].img1,res[i].limit);        
                    }
                    g_html=g_html+'</div>';
                }
    
                console.log('g_html'+g_html);
                $('.displaylocations').css('display','none');           
                $(".displaylocations").html(g_html);    
                        //  $(".displaylocations").html(str);   
    
    
                setTimeout(function(){ //make sure displaylocations has been updated
                    $('#lhead2').html('Tuhura <span lang="en">Locations</span>');
                    $('.displaylocations').trigger('create');
                    $('.displaylocations').css('display','block');
                    $( ".displaylocations" ).collapsibleset( "refresh" );
    
                },300);
            },
            error: function(faildata){
                switch ($vfrom) {
                    case "region"   : $("#lhead3").html('Region Info Unavailable...');break
                    case "locs"     :   $("#lhead2").html('Locations Unavailable...');break;
                }
            }
        });
    }
    
    function lochtml($vtype,$vno,$locid,$loccode1,$head,$desc,$vlang,$vlat1,$vlong1,$img1,$limit) {
    console.log('lochtml '+$desc);
            g_html=g_html+  "<div class='locgoh'>";
            g_html=g_html+      '<a href="#" onclick="getsitedetails('+"'gps','"+$locid+"','"+$loccode1+"','s','sites','"+$vlang+"',1,0,'x',"+$vlat1+","+$vlong1+')">';
            g_html=g_html+ '<img src="http://tuhtop.co.nz/images/rightarrow.png" width="30px" height="30px" /></a>';                                                                            
            g_html=g_html+  '</div>';
            g_html=g_html+'<div data-role="collapsible" class="loccollapse" data-theme="f" div="coldiv">';              
            g_html=g_html+  '<h3>'+$head+'</h3>';                                               
            g_html=g_html+  '<p><div class="locli0">';                                  
            g_html=g_html+      '<span class="li1">' +$desc+ '</span>';                     
            g_html=g_html+      '<span class="li2"><a href="#" onclick="getsitedetails('+"'gps','"+$locid+"','"+$loccode1+"','s','sites','"+$vlang+"',1,0,'x',"+$vlat1+","+$vlong1+')">';
            g_html=g_html+      '<img src=\''+$img1+'\' width=\'120"\' height=\'120\' alt=\''+$img1+'\'/></a>';         
            g_html=g_html+      '</span>';      
            g_html=g_html+  '</div></p>';       
            g_html=g_html+'<div class="clearfloat"></div>';             
            g_html=g_html+'</div>';
    
    }
    

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,据我所知,在阅读您的密码时,可能存在多个问题

首先, g_html 变量的引用,为什么不在函数 lochtml 中返回html,并在for循环中,像这样构建HTML ,它更具可读性

    for (var i=0;i<res.length;i++){
        g_html=g_html+lochtml('loc',i,r...)
    }

其次, g_html 的初始值设置为 res [0] .brand ,它有什么价值?

第三,这就是为collapsible-set div生成的内容:

    the res[0].brand above 
    <div data-role="collapsible-set" data-theme="f">
        <div class='locgoh'>
            <a ...>
                <img />
            </a>
        </div>
        <div data-role="collapsible" class="loccollapse" data-theme="f" div="coldiv">
            <h3>...</h3>
            <p>...</p>
            <div class="clearfloat"></div>
        </div>
        ...
        ...
    </div>

这不是jQuery Mobile对data-role =“collapsible-set”内容的期望,我认为应该只有&lt; div data-role =“collapsible”&gt; a &lt; div data-role =“collapsible-set”&gt; 。我建议您在&lt; h3&gt;

内移动&lt; div class ='locgoh'&gt;

第四,是否需要&lt; div class =“clearfloat”&gt; ?你是否在可折叠内浮动标签 p ?我之前使用“float”和一些jQM小部件时遇到了一些问题。此外,如果不需要在那里使用clearfloat,最好将其移除。

最后,我认为&lt; div data-role =“collapsible-set”&gt;上的 collapsibleset('refresh')应该调用 不在其容器上。