在刷新页面之前,JQuery Mobile页面不会加载getJSON内容

时间:2011-10-17 20:33:21

标签: javascript jquery jquery-mobile

我有一个被查询和链接的“病人”列表:

list.append($(document.createElement('li')).html("<a href='./patient.html?id="+data[i].UnitNumber+"'><img src='http://URLGOESHERE/wcf/PatientSearch.svc/patientpic.jpg?unitnumber="+data[i].UnitNumber+"&type='/><h3>"+data[i].LastName+", "+data[i].FirstName+" "+data[i].MiddleName+"</h3><p>Age: "+data[i].Age+"</br>SSN: "+data[i].SSN+"</p></a><a href='./patient.html?id="+data[i].UnitNumber+"' data-transition='slideup'>info</a>"));

点击该页面后,我到达患者个人资料页面,该页面应使用URL中的查询加载部分数据(即patient.html?id = 100002)。该ID用于getJSON调用以填充各个字段。我想在页面加载后立即发生这种情况。

问题:当点击上面的列表元素之一时,它会转到患者个人资料页面,但没有填充任何字段。如果我刷新同一页面,则所有数据都可以正常加载。这是一些代码:

  function login() {

        var query = window.location.search;

          if (query.substring(0, 1) == '?') {
            query = query.substring(4);
          }




                    $.getJSON("http://URLGOESHERE/wcf/PatientSearch.svc/byunitnumber?unitnumber="+query+"", function(data) {

                           var head1 = document.getElementById("name");
                           var newtitle=""+data.LastName+", "+data.FirstName+" "+data.MiddleName+"";
                           head1.firstChild.nodeValue=newtitle;



                            document.frmLogin.email.value="  "+data.BirthDateText+" ("+data.Age+")";
                            document.frmLogin.password.value="  "+data.SSN;


                            document["profpic"].src = "http://URLGOESHERE/wcf/PatientSearch.svc/patientpic.jpg?unitnumber="+query+"&type=pic";



                });





           }

我在document.ready上调用函数“login()”。我甚至试着称它为“onLoad”的身体。不知道为什么链接时这不起作用,但如果我直接转到URL或刷新..

1 个答案:

答案 0 :(得分:0)

在多页文档中进行链接 单个HTML文档可以包含一个或多个页面&#39;容器只需堆叠多个div,数据角色为&#34; page&#34;。这允许您在单个HTML文档中构建一个小型站点或应用程序; jQuery Mobile将只显示第一个页面&#39;它在页面加载时在源顺序中找到。

如果多页文档中的链接指向一个锚(#foo),框架将查找具有该ID的页面包装器(id =&#34; foo&#34;)。如果它在HTML文档中找到一个页面,它会将新页面转换为视图。您可以在本地,内部和#34;页面之间无缝导航。和jQuery Mobile中的外部页面。两者对最终用户看起来都是一样的,只是外部页面在加载时会显示Ajax微调器。在任何一种情况下,jQuery Mobile都会更新页面的URL哈希,以启用后退按钮支持,深层链接和书签。

重要的是要注意,如果您从通过Ajax加载的移动页面链接到包含多个内部页面的页面,则需要添加rel =&#34; external&#34;或data-ajax =&#34; false&#34;到链接。这告诉框架执行整页重新加载以清除URL中的Ajax哈希。这很重要,因为Ajax页面使用散列(#)来跟踪Ajax历史记录,而多个内部页面使用散列来指示内部页面,因此这两种模式之间的散列会发生冲突。

例如,指向包含多个内部页面的页面的链接如下所示:

href="multipage.html" rel="external">Multi-page link