使用Thymeleaf時,ajax的url如何設置?
最近在做一個論壇項目使用到了Thymeleaf,在使用ajax請求的時候發現無法獲取BasePath。在經過一番查閱資料后終於得知如下倆種方法,在此記錄以免以后用到。
在js中如果想使用Thymeleaf,必須要在<script>中加入th:inline="javascript"屬性值表示可以使用內聯 js ,即可以在 js 代碼中使用 [[]] 取值,否則報錯。即能夠可靠的實現:
<script type="text/javascript" th:inline="javascript"> </script>
實現方法1:
<script type="text/javascript" th:inline="javascript"> /*<![CDATA[*/ var basePath = [[${#httpServletRequest.getScheme() + "://" + #httpServletRequest.getServerName() + ":" + #httpServletRequest.getServerPort() + #httpServletRequest.getContextPath()}]]; $(document).ready(function () { $.ajax({ type: 'post', dataType: 'text', url: basePath + '/index/ajaxtest', data: {}, cache: false, async: true, success: function (data) { var data = eval('(' + data + ')'); $('#idUser').text(data.name); $('#idMsg').text(data.msg); } }); }); /*]]>*/ </script>
實現方法2:使用 url:[[@{/index/ajaxtest}]]這樣就可以,不用那樣獲取basePath。
試用這種方法編譯器可能會報錯,但是可以忽略此錯誤,直接運行即可。
