![](/img/trans.png)
[英]How can I make a knockout "value" binding write-only so it doesn't try to read from it?
[英]How can I POST a parameter so that it doesn't show up in the querystring, to make sure users can't change the value directly in the URL?
我有一個分頁的搜索結果頁面,當前頁面號包含在查詢字符串中,如下所示:
mysite.com/search/database-search?name=smith&page=10
我不希望用戶能夠直接在url中更改頁面號,他們只能通過單擊頁面按鈕來更改頁面。 因此,我需要從查詢字符串中刪除頁面,但仍將頁面號作為參數來獲取相應的結果頁面。
我以為可以通過使用POST而不是GET來完成此操作; 我的頁面按鈕最初設置為帶有“ href = / search / database-search?name = smith&page = xx”的鏈接,但是我認為,如果我使用表單來提交頁面編號,那將傳遞頁面編號而不會在查詢字符串中顯示它。
這是我嘗試的代碼:
function postToPage(page) {
debugger;
var url = window.location.href;
var newForm = $("<form>", {
"action": url
}).append($("<input>", {
"name": "page",
"value": page,
"type": "hidden"
}));
newForm.submit();
}
<a onclick="postToPage($(this).text());" href="javascript:void(0)" class="page-button">@pageNum</a>
但是,它不符合我的預期。 當我單擊頁面按鈕時,URL中的查詢字符串將被忽略,而“頁面”仍顯示在查詢字符串中,因此結果與我要完成的操作相反。 我丟失了所需的查詢參數,而“ page”是仍然包含在querystring中的唯一內容。
單擊頁面按鈕時,我被帶到“ / search / database-search?page = x”
有什么方法可以將頁面用作查詢參數,而不會顯示在URL中
編輯:我將窗體方法更改為“ POST”,但“頁面”變量正在丟失。 現在包括當前查詢字符串中的參數,但未使用頁面值。
似乎您沒有將表單的方法設置為POST。
function postToPage(page) {
debugger;
var url = window.location.href;
var newForm = $("<form>", {
"action": url,
"method": "POST" // set form to POST, instead of the default GET
}).append($("<input>", {
"name": "page",
"value": page,
"type": "hidden"
}));
newForm.submit();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.