使用jQuery.post传递post参数

时间:2011-04-28 23:05:24

标签: jquery ajax parameters

我有一个常规的锚标签,它被绑定到$ .post()但是我无法绕过传递参数的最佳方法。这就是我所拥有的:

<a 
href="ajax/tag_delete.php?id=<?php echo $tag->id;?>" <!-- This feels too "GET" and I don't want to have to parse this query string -->
id="<?php echo $tag->id;?>" <!-- this feels wrong, shouldn't have a number as an id  --> 
class="delete_tag_btn">
delete
</a>

<script>
    $('.delete_tag_btn').bind('click', function(event){
        event.preventDefault();
        $.post( this.href, {/* WHAT IS THE BEST WAY TO GET THESE */}, function(reply) {
            log(reply);
        });
    });
</scirpt>

非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:0)

$(this).attr('href').split('=')[1]

当然,这取决于你的url有一个querystring参数。如果需要,您可以获得更多的幻想,但这可以解决您当前的问题。

修改

$(document).ready(function(){
    $('.delete_tag_btn').bind('click', function(event){
        event.preventDefault();

        var s = $(this).attr('href').split('?')[1].split('&');
        var a = new Object();

        for(var n = 0; n < s.length; ++n)
        {
            var t = s[n].split('=');
            console.log(String(t[0]));
            a[String(t[0])] = t[1];
        }

        console.log(a);
    });
});

根据编辑,您可以在href中指定任意数量的属性,然后这些属性将传递到您的post。换句话说,您可以在整个应用程序中使用此函数任何地方,而无需指定要获取的密钥:

$.post( 
     this.href, 
     data: a, 
     function(reply) {
            log(reply);
});

答案 1 :(得分:0)

实际上,工作。您可能需要删除空对象参数并切换到.get调用...

$.get(this.href, function(reply){
   // Do whatever
});

另一方面,您始终可以创建一个对象......

var data = {
   id: $(this).attr('id')
}

然后在.post电话中传递...

$.post(this.href, data, function(reply){
   // Do whatever...
})