私は自分の JS コードを酷使しているだけで、自分eval()
のを に置き換えたいと思っていwindow[functionName]
ます。そのため、JSFiddle で簡単なテストを行ったところ、すべて次の行でうまく機能します。
var fnName = "Page_test";
var foo = "yammy";
var Page_test = function(bar) {
return bar;
}
var Obj = window[fnName];
alert(Obj(foo));
(この JSFiddle へのリンク-> http://jsfiddle.net/juSHj/ )
eval()
ここで、次のコード行を上記の概念の悪に置き換えようとします。
古いコード: (魅力のように動作する / ajax の成功後に起動)
...
success: function(ret) {
if(returnFnAjaxForm != "") {
eval(returnFnAjaxForm+"('"+encodeURI(jQuery.trim(ret))+"')");
}
}
...
新しいコード:
戻り値: Uncaught TypeError: オブジェクト [オブジェクト Window] のプロパティ 'dummyFn' は関数ではありません
...
success: function(ret) {
if(returnFnAjaxForm != "") {
fnObj = window[returnFnAjaxForm];
if(typeof(fnObj) == "function") { // this is optional
fnObj(encodeURI(jQuery.trim(ret)));
}
}
}
...
どこで間違えたのか気になります。はい、起動しようとしている関数が存在し、で定義されていvar
ます。この概念は、ajax 応答で使用できない可能性がありますか?
助けてくれてありがとう。
(jQueryを使用)