0

これで、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) {}

呼び出しの無効なコンテキストである可能性があると思います。そうですか?

4

2 に答える 2

1

その理由は、text関数への参照を取得すると、オブジェクトに関連付けられなくなるためです。オブジェクトのコンテキストではなく、グローバル コンテキスト (ウィンドウ) で呼び出されます。

メソッドを使用してproxy、関数をコンテキストにバインドできます。

var user = $('#user_id');
$.get('cgi/remote_user', $.proxy(user.text), user);
于 2013-04-11T06:04:48.500 に答える
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')));
于 2013-04-11T06:07:57.077 に答える