我在用户的个人资料页面上有一个jQueryUI Datepicker。当用户选择日期而不是使用日期值填充文本框时,我想立即发送GET
请求以获取该用户在所选日期的统计信息。
网址将是这样的:
/users/1?date=20110905
然后我的UsersController
会查看params[date]
并查询模型以获取相应的基于日期的数据。
我遇到问题的部分是JavaScript部分。我需要挂钩jQueryUI Datepicker的onSelect
事件,但是在我捕获事件之后:
GET
请求?我想要整页重新加载,我应该使用window.location
吗?答案 0 :(得分:2)
您可以使用location.pathname
获取网址的路径,并且可以通过将location.href
分配给要重新加载网页的网址来重新加载当前页面。所以,你可能会看到这样的东西:
$('#datepicker').datepicker({
onSelect: function(dateText, inst) {
// location.pathname == '/users/1'
var userId = location.pathname.split('/')[2];
var dateText = ...
location = location.href + "?date=" + dateText;;
}
});
注意,location.href
为您提供整个网址,包括查询字符串(用于GET方法)和哈希,而location.pathname
仅为您提供网址路径。有关location
对象,请参阅the MDN documentation。
答案 1 :(得分:0)
处理ERB文件时,< %%>标签首先在服务器上处理。然后,结果将发送到浏览器。因此,您可以将ERB标记注入到javascript中,如下所示:
var user_id = <%= user.id %>;
然后,您可以使用window.location重定向,例如索引操作:
window.location = "<%= url_for :action => :index %>";