使用jQuery将变量直接传递给$ .post()函数

时间:2013-05-05 07:19:29

标签: javascript jquery

我正在使用以下$.post语法从数据库中检索json数据,然后将其传递给将它们附加到某个(!)div的函数。

$.post("request.php", { var1:'var1', var2:var2, .. }, myownfunction, "json" );

我可以从上面的这一行直接将变量传递给我的函数吗? 由于一些小故障,我在我的脚本中创建了一个错误。

我有很多带有'x'类的div,当用户选择一个时,它的类被设置为'selected'。上述post请求中的函数仅针对:$('div#selected'),但是,如果响应通过用户选择另一个div时,来自服务器的数据将附加到错误的div。

我想将所选div的id传递给我的函数,这样就不会有什么混淆了。有没有办法做到这一点?

现在,我正在考虑将id传递给request.php并将其作为json的一部分返回,但这样做并不优雅。

3 个答案:

答案 0 :(得分:2)

  

我想将所选div的id传递给我的函数,这样就不会有什么混淆了。有没有办法做到这一点?

是的,您可以使用$.Proxy传递所点击的div的上下文。并使用函数内的this.id访问id的id。

$.post("request.php", 
                { var1:'var1', var2:var2, .. }, 
                $.proxy(myownfunction, elem), "json" );

在你的功能中

function myownfunction( response )
{
....
    this.id // here will be the id of the element passed if it is the clicked div then you will get it here
....
}

答案 1 :(得分:1)

如果将函数调用包装到匿名函数,则可以传递所需的任何参数。

$.post( 
    "request.php", 
    { var1:'var1', var2:var2, .. }, 
    function( data, textStatus, jqXHR ) {
        myownfunction( data, textStatus, jqXHR, myVariable );
    },
    "json" 
);

答案 2 :(得分:1)

如果您使用$.ajax代替$.post,则可以使用其context设置根据需要明确设置回调的this值:

$.ajax('request.php', {
    type: 'POST',
    data: { ... },
    context: mydiv
}).done(myownfunction);

function myownfunction(data) {
    var id = this.id;     // extracting the element here
    ...
}