jQuery onclick传递post变量并重新加载页面

时间:2010-02-21 00:29:22

标签: javascript jquery dom

我可以在点击超链接时传递帖子变量并重新加载页面吗?

要明确我有这样的事情。 <a href="test.php?name=test">Click</a>

如果启用了javascript,

我想我可以使用“event.preventDefault()”来抑制作为GET变量的传递。

所以现在onclick,name应该作为post变量传递而不是get。

如果禁用了javascript, 那么上面应该有效。

3 个答案:

答案 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来限制搜索页面的某些值。