我可以在点击超链接时传递帖子变量并重新加载页面吗?
要明确我有这样的事情。
<a href="test.php?name=test">Click</a>
如果启用了javascript,
我想我可以使用“event.preventDefault()”来抑制作为GET变量的传递。
所以现在onclick,name应该作为post变量传递而不是get。
如果禁用了javascript, 那么上面应该有效。
答案 0 :(得分:11)
您可以通过创建新的form
元素,将其指向href
并在其上调用.submit()
来实现。
<a class="postlink" href="test.php?name=test">Click</a>
<script type="text/javascript">
$('.postlink').click(function() {
var form= document.createElement('form');
form.method= 'post';
form.action= this.protocol+'//'+this.hostname+this.pathname;
$.each(this.search.slice(1).split(/[&;]/g), function() {
var ix= this.indexOf('=');
if (ix===-1) return;
var input= document.createElement('input');
input.type= 'hidden';
input.name= decodeURIComponent(this.slice(0, ix));
input.value= decodeURIComponent(this.slice(ix+1));
form.appendChild(input);
});
document.body.appendChild(form);
form.submit();
return false;
});
</script>
或者您可以改为执行AJAX请求,然后根据需要reload()
页面。
但是,我不确定你为什么要这样做。什么用途是通常POST的链接,除非它不是? (不仅在JS被禁用/不可用时或者当它是搜索引擎时,而且当用户中间点击链接或尝试右键单击 - 将其加入书签或其他任何内容时。)
如果您想要的只是一个提交POST表单的按钮,那么最好使用真实表单和提交按钮,然后使用CSS将其重新设置为链接,如果这是您想要的看起来像。
答案 1 :(得分:2)
很好的暗示......
我是第一次尝试通过Ajax Post调用发送表单数据并在之后重新加载页面,但它无法正常工作:
var biq_select_val = jQuery('#biq_search_select').val();
jQuery.post(window.location.href,
{ biq_amazon_item_list_search: biq_select_val},
function() {window.location.reload();}
);
现在我只使用:
jQuery('#biq_amazon_item_list_search_form').submit();
它工作正常。
答案 2 :(得分:0)
我在页面上有10个链接。当用户点击这些链接时,必须进行ajax-reload。
要明确我有这样的事情。
<a href="test.php?name=one">one</a>
<a href="test.php?name=Two">Two</a>
如果启用了javascript,
Onclick,必须进行ajax加载。
如果禁用了javascript,那么以上操作就可以了。
基本上我使用name
来限制搜索页面的某些值。