现在我有了从cgi-script获取一些数据的代码。它运作得很好。
$.get('cgi/remote_user', function(data){
$('#user_id').text(data);
});
但如果我尝试将$('#user_id').text
设置为回调函数,则会失败并显示Uncaught TypeError: Illegal invocation
:
$.get('cgi/remote_user', $('#user_id').text);
知道为什么会这样吗? $('#user_id').text
与function(data) {}
具有相同的功能..
我怀疑它可能是无效的调用上下文,我是对的吗?
答案 0 :(得分:1)
原因是当您获得对text
函数的引用时,它不再附加到该对象。它将在全局上下文(窗口)中调用,而不是在对象的上下文中调用。
您可以使用proxy
方法将函数绑定到上下文:
var user = $('#user_id');
$.get('cgi/remote_user', $.proxy(user.text), user);
答案 1 :(得分:0)
$.get('cgi/remote_user', $('#user_id').text);
就像写作:
var tmp = $('#user_id').text;
$.get('cgi/remote_user', tmp);
相当于
$.get('cgi/remote_user', $.fn.text);
$('#user_id')
没有this
。
你想要的是
$.get('cgi/remote_user', $.fn.text.bind($('#user_id')));