2015-04-19 50 views
1

我已经创建了一个HTML5应用程序,它使用knockoutjs来调用一个宁静的服务并获取/发布JSON消息。 这是我第一个使用HTML5的应用程序,所以我不确定如何实现URL重定向。HTML5,淘汰赛URL重定向功能

在应用程序中,我有两个html页面,一个是DataGrid页面,显示通过执行get rest调用接收到的所有数据。我添加了一个超链接到显示器中的一个字段,我希望用它来重定向到详细信息页面,并让其余的调用来获取该特定ID的数据并在稍后将其显示在可编辑页面中以便保存更改。

UserGridPage.html

<tbody data-bind="foreach:userList"> 
<tr> 
<td><a data-bind="attr:{href: userInfoUrl()}, text:userInfoId"></a></td> 
<td data-bind="text: UserName" ></td> 
</tr> 

UserGridPage.js

MyUserInfoViewModel = function() { 
var self = this; 
self.userList = ko.observableArray(); 
$.getJSON("http://localhost:8080/user/webresources/userinfo/"). 
     then(function (userinfos) { 
      $.each(userinfos, function() { 
       self.userList.push({ 
          userInfoUrl:ko.observable('/USERUI/UserEntry.html#'+this.userInfoId), 
        userInfoId:ko.observable(this.userInfoId), 
        policyHolderEmail: ko.observable(this.policyHolderEmail), 
       }); 
      }); 
     }); 

我想知道如何才能UserEntry页面会知道哪个ID是越来越传递给它的页面,以及如何我会让剩下的电话让Id传递给安宁的URL。

欣赏了一些代码样本的任何帮助,链接等。

感谢

+0

您是否希望在网格中创建一个超链接的列,并且您希望将点击重定向到相应的详细信息页面传递行ID。让我们知道。 –

+0

@supercool是的你是正确的,我正在使用一个超链接作为一个列,并在点击它想要把用户带到所有数据填写的详细信息页面... – ngcode

+1

好的请检查答复贴,我希望这有助于。欢呼 –

回答

1

在你userEntry.html,如果你想获得id的值传递:

<script> 
    var id = window.location.hash; 
</script> 

我记得Firefox有一个稍微不同的行为,因为它解码片段中的URL编码字符,所以如果你想要原始内容,你也可以c onsider using:

<script> 
    var id = window.location.href.split("#")[1]; 
</script> 
-1

不知道你怎么能得到从JavaScript中的URL参数,但如果你愿意用PHP你可以得到带有$ _REQUEST ['Id']的Id参数用于生成新的REST调用。

所以您的href将类似于 “/USERUI/UserEntry.php?Id=5”

要使用该变量在JavaScript您UserEntry页面上,你可以这样做:

<script> 
    var id = <?php $_REQUEST['Id']; ?> 

    //generate your restful query here. 
</script> 
+0

我不是很熟悉PHP有没有什么办法可以使用JSP来做同样的事情...... – ngcode

+0

这个问题没有说明他们使用的服务器技术。引入PHP作为Javascript问题的解决方案并不合适。使用javascript从URL获取参数也很简单。这是一个很差的答案 – Tyrsius

+1

对不起,我只是想提供一些关于如何解决问题的指南。 –

2

你应该尝试这样

查看:

<ul data-bind="foreach: items"> 
    <li> 
     <a data-bind="attr: { href: id }, text: name,click:function(){alert(id)}"></a> 
    </li> 
</ul> 

视图模型:

var viewModel = { 
    items: [{'id':1,'name':"one"},{'id':2,'name':"two"},{'id':3,'name':"three"}]   
}; 

ko.applyBindings(viewModel); 

样品工作拨弄here

+0

我试过这个,它的工作原理......但我想点击调用viewmodel函数,并将id作为参数传递给函数。一旦我明白了,我可以根据ID进行REST调用,并获取该特定ID的所有详细信息......谢谢 – ngcode

+0

确定试试这个http://jsfiddle.net/supercool/WbxPm/217/。干杯 –