在我的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")