2011-12-28 7 views
0

ajaxリクエスト内でローカルJavaScript関数fnを呼び出すにはどうすればよいですか? jQueryのは、私がクリックしたときに、Webリソースをロードすることlink要素を作成していますし、その成功のコールバックでローカルメソッドが呼び出されるべき使用:AjaxレスポンスコールバックでローカルJavaScriptメソッドを呼び出す

$('body').append('<a onclick=\'$.ajax({' + 
    'url: "http://fiddle.jshell.net",' + 
    'context: document.body,' + 
    'success: function(){$("body").append("</br>callback");fn();}});\'>CLICK ME</a>'); 

function fn() { 
    $('body').append('</br>fn'); 
} 

をここで試してみてください:http://jsfiddle.net/jzWUA/1/

の代わりに印刷されているfn、エラーログは、私に語った:

Uncaught ReferenceError: fn is not defined

(最新のChromeを使用します)。

編集:

コメント主はアンダーラインとして、研究課題として、この質問を扱います。それは、生産的なアプリケーションで使われることを意味するものではありません。

+2

イベントをアタッチする恐ろしい方法です。 – alex

+0

+1生産アプリケーション(またはアプリケーション)でこれを見ると泣くだろうと私は同意しますが、これは興味深いことです。 –

+0

私はこのコードスニペットのあなたの嫌悪感を理解しています。バックグラウンドは次のとおりです:dotjsプラグインを使用してisがロードされた後、自分のメールプロバイダ(GMX)のウェブサイトを変更しています。そのWebサイトはAjaxのパラダイムを採用しておらず、すべての単一アクションによってページがリフレッシュされるため、私はいつもページをリロードしないような動的な動作を追加しようとします。 –

答えて

4

文字列リテラルにJavascriptコードを挿入しないでください。

あなたはこれにイベントハンドラを追加することで、適切な方法を行うと、それが正常に動作します:

$('<a>Click!</a>').appendTo('body').click(function() { fn(); }) 
+0

実際、あなたの提案ははるかに控えめです。 –

関連する問題