在我的Yesod项目中,我有以下路线:
- /api/hide/thread/#Text/#Int ApiHideThreadR GET
我想在客户端请求它与javascript:
- function hideThreadCompletely(threadId,board) {
- $.getJSON("/api/hide/thread/"+board+"/"+threadId,function(data) {
- $('#thread-'+threadId).hide();
- });
- }
但是我不能使用@ {ApiHideTHreadR},因为Yesod需要编译时的参数.如果我想要API URLS看起来像api / board / 1/1,而不是api / board?bid = 1& tid = 1,那么这是什么正确的解决方案?继续使用手动定义的URL,如“/ api / hide / thread /”board“/”threadId?
解决方法
经过一些搜索,我发现这个
discussion,在那里建议你添加url作为一个“data-url”属性到一些元素.然后从元素加载url.
这样的事情
这样的事情
- <div id="thread-1" data-hide-url=@{ApiHideTHreadR}>
- var url = $("#thread-1").data("hide-url")