JQuery - 如何将POST变量添加到超链接中

7
在一个表格中,我有像这样的链接:test.php?id=1 我想要将prev_idnext_id传递给test.php。(这些变量的目的是创建上一页/下一页按钮;用户可以对列表进行排序,所以在test.php内部没有简单的方法可以找到它们。)
然而,我不希望prev_idnext_id对用户可见。我可以像这样格式化href:
<a href="test.php?id=1" prev_id="5" next_id="45">

使用JQuery来“劫持”链接,保留id作为URL中的GET参数,但将prev_id和next_id作为POST参数发送到test.php?
3个回答

5
也许这是你的代码:
 <a id="link" href="test.php?id=1" prev_id="5" next_id="45">

以及jQuery代码

$("a#link").click(function(){

    $.post("test.php",
       {
         prev_id: $(this).attr("prev_id"),
         next_id: $(this).attr("next_id")
       },
       function(data) {
         alert("Data Loaded: " + data);
       }
    );

    return false;
});

2
嗨,将“test.php”更改为$(this).attr("href")后,正确的信息将传递到页面。但我希望点击可以跳转到实际页面,而不是在警告框中显示它!该怎么办? - elaxsj
是的,我忘记改变'href'属性了。我的回调函数只是一个例子。你可以随意做任何你想做的事情。 - Erik Márföldi

2
您可以使用 jQuery 的 post 方法。通过 onClick 事件调用一个函数来发布您的数据。
 <a onClick="postdata()" prev_id="5" next_id="45">

以及jQuery代码

function postdata(){
    $.post("test.php", { id: "1", next_id: "2" },
       function(data) {
         alert("Data Loaded: " + data);
       });
}

谢谢。但是这样做不会将id作为可见的GET变量保留下来,也不能优雅地降级? - elaxsj
@elaxsj,使用$.get而不是$.post来进行_GET_操作。只需记住实际操作是隐藏的,除非你编程让它改变,否则浏览器不会发生任何变化。JQuery get - David Silva-Barrera

2
我发现做这种事情最简单的方法是动态向页面添加一个表单,然后提交它:
$('body').append('<form id="myawesomeform"></form>');
$('#myawesomeform').attr('action','test.php?id=1');
$('#myawesomeform').attr('method','post"');
$('#myawesomeform').append('<input type="hidden" name="prev_id" id="prev_id" value="5">');
$('#myawesomeform').append('<input type="hidden" name="next_id" id="next_id" value="45">')
$('#myawesomeform').submit();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接