抽點時間分享個小東西。
利用js來實現頁面跳轉。
結論:
js實現頁面跳轉,並帶數值過去;簡答有效的方式就是建立一個臨時form,用於數據傳輸。
起因:
系統要搞個操作日志記錄。點擊查看文件的排行榜,可以點擊直接查看。

系統中的文件分為兩種:
- 一種是從其他網站爬過來的文章,將內容(建議存html,當然如果想要統一樣式的話就存純文本,分隔符等也存進去)存入數據庫中。查看文件時,將存入的內容之間貼到html相應的位置。
like this:

效果感覺還可以的。
- 還有一種是文件:doc,xlsx,pdf此類。
由於文件在不同欄目下,訪問地址或者說請求的接口不同。所以我就只記錄了訪問文件的url;
當初並沒有記錄此文件是在數據庫中還是磁盤文件中,事后發現沒必要記錄。
基本思路:查詢數據庫,得到排行榜。
點擊文件,ajax調用接口。
然后
這個時候要考慮的是,我應該怎么判斷他返回的是文件還是下載,以及How to do!
①、嘗試訪問
②、觀察返回結果
③、建立臨時form 或者 打開新窗口展示PDF文件或下載
文件a標簽,onclick事件

function showZXWJ(data1){
//點擊時刷新最新表格的訪問量數據
initTable(1,5);
$.ajax({
url: data1,
success:function(data){
if(data){
var dataValue = data.items;
var str = dataValue[0].content;
var title = dataValue[0].lawsName;
//將轉移字符,替換為html
str = str.replace(/\n /g,"<br/> ");
str = str.replace(/\r/g,"");
str = str.replace(/\n/g,"<br/>");
str = str.replace(/(^\s*)|(\s*$)/g,'');
str = " " + str;
var url = <%=basePath%>+'shouyeShowFile.do';
//建立一個臨時表,用於裝載ajax請求得到的數據,數據可能很大,所以肯定選的是post
var form = $("<form></form>").attr("action", url).attr("method", "post");
form.append($("<input></input>").attr("type", "hidden").attr("name","fileName" ).attr("value", title));
form.append($("<input></input>").attr("type", "hidden").attr("name","content" ).attr("value", str));
form.appendTo('body').submit().remove();
} else {
window.open(data1);
}
}
});
}
先嘗試請求,當返回有值(因為系統接口中,所有關於查看下載的接口都沒有返回值,所以可以這樣判斷,或者你可以看返回的結果有沒有什么共通性)
時候,就建立臨時表單用於傳輸裝載數據。
否則開辟新窗口,下載OR展示。
form表單傳輸訪問的接口如下
。
@RequestMapping(value="shouyeShowFile.do")
public String findOne(FileBean fileBean,Model model){
model.addAttribute("vo", fileBean);
return "shouyeFileShow";
}
展示頁面,主要代碼如下:
<body>
<div class="contentxw" id="viewData" style="">
<div class="padd">
<div class="BreadcrumbNav">
<span
style="float: right; cursor: pointer; color: #1a72a5; font-size: 30x;"
onclick="back()"><img src="images/icofh.png" alt=""
align="center"></span>
</div>
<div class="article oneColumn pub_border" id="scrollDiv"
style="overflow-y: auto; height: 450px;">
<h1>
<span id="title" style="font-weight: bold;font-size: 28px;">${vo.fileName}</span>
</h1>
<div class="pages-date">
<span class="fontsj" id="wenHao"></span>
</div>
${vo.content}
</div>
</div>
</div>
</body>
總結:
js實現頁面跳轉,並帶數值過去;簡答有效的方式就是建立一個臨時form,用於傳輸數據。
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">