我正在使用以下$.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的一部分返回,但这样做并不优雅。
答案 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
...
}