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

Javascript 使用jQuery将变量直接传递给$.post()函数,javascript,jquery,Javascript,Jquery,我使用以下$.post语法从数据库检索json数据,并将其传递给一个函数,该函数将这些数据附加到某个(!)div 我可以,从上面这一行,直接把一个变量传递给我的函数吗? 由于一些小故障,我在脚本中创建了一个bug 我有很多类为“x”的div,当用户选择一个时,它的类被设置为“selected”。上述post请求中的函数只针对以下对象:$('div#selected'),但是,如果在响应通过时用户选择了另一个div,则来自服务器的数据会附加到错误的div 我想将所选div的id传递给我的函数,这样

我使用以下
$.post
语法从数据库检索json数据,并将其传递给一个函数,该函数将这些数据附加到某个(!)div

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

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

我想将所选div的id传递给我的函数,这样就不会对什么地方发生混淆。有办法吗


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

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

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

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

$.post( 
    "request.php", 
    { var1:'var1', var2:var2, .. }, 
    function( data, textStatus, jqXHR ) {
        myownfunction( data, textStatus, jqXHR, myVariable );
    },
    "json" 
);
我想将所选div的id传递给我的函数,这样就不会对什么地方发生混淆。有办法吗

是的,您可以使用在单击的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
....
}
我想将所选div的id传递给我的函数,这样就不会对什么地方发生混淆。有办法吗

是的,您可以使用在单击的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
....
}

如果使用
$.ajax
而不是
$.post
,则可以使用其
上下文设置来根据需要显式设置回调的
值:

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

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

如果使用
$.ajax
而不是
$.post
,则可以使用其
上下文设置来根据需要显式设置回调的
值:

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

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

你什么时候发送邮寄请求?单击一个元素时?div包含图像,当用户单击一个div时,它会被放大,此时我发送请求,以便我可以将有关图像的信息附加到div。。但是当用户等待时,他可以单击另一个div…。您何时发送POST请求?单击一个元素时?div包含图像,当用户单击一个div时,它会被放大,此时我发送请求,以便我可以将有关图像的信息附加到div。。但是,当用户等待时,他可以单击另一个div…不,不,不!它是
this.id
,而不是
$(this.attr('id')
!请了解何时不使用jQuery。您还应该只代理
elem
,而不是
$(elem)
。如前所述,您为
elem
调用jQuery构造函数两次,而根本不需要调用它。@Alnitak您说得对,事实上我在代码上面的语句中提到了这个.id,但在实际代码中没有提到……不,不,不!它是
this.id
,而不是
$(this.attr('id')
!请了解何时不使用jQuery。您还应该只代理
elem
,而不是
$(elem)
。如前所述,您为
elem
调用了两次jQuery构造函数,但根本不需要调用它。@Alnitak您说得对,事实上我在代码上面的语句中提到了这个.id,但在实际代码中没有提到它……同样感谢您!我试过了,但没用谢谢你!我试过了,但没用s