【问题标题】:Pass variable directly to $.post() function with jQuery使用 jQuery 将变量直接传递给 $.post() 函数
【发布时间】:2013-05-05 16:02:39
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 什么时候发送 POST 请求?点击一个元素?
  • div 包含图像,当用户单击 div 时,它会被放大,这就是我发送请求的时候,这样我就可以将有关图像的信息附加到 div.. 但是当用户等待,他可以点击另一个div....

标签: javascript jquery


【解决方案1】:

我想将所选 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
....
}

【讨论】:

  • 不,不,不!这是this.id,而不是$(this).attr('id')!请了解何时 使用 jQuery。您还应该代理elem 而不是$(elem)。正如所写的那样,当根本不需要调用它时,你会为 elem 调用 jQuery 构造函数两次。
  • @Alnitak 你说得对,事实上我在代码上方的声明中提到了 this.id,但在实际代码中没有提到......
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    如果您使用$.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
        ...
    }         
    

    【讨论】:

    • 也感谢这个!我试过了,但没有用。 :S
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2012-03-02
    • 2011-01-18
    • 2012-06-19
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多