ajaxでデータと一緒にjavasciptを取得して、実行したかった。
サーバー側でfunctionを動的に生成して、その関数をjavascriptで実行したかったんです。
最初は、htmlでscriptタグを出力しておいて、
みたいにして出力してみたものの当然実行されず。
evalしても駄目。
google先生で探し回ったところ、appendChildで出力されれば適用されることがわかった。
以下はサンプルコード。
var s = document.createElement("script");
s.type = "text/javascript";
s.innerHTML = script;
var ele = document.getElementById("display_area");
ele.appendChild(s);
}
function display_script() {
var parm = {
url : $('#url').val(),
mode : $('input[name=mode]:checked').val()
};
var url = "/test";
$.ajax({
url: url,
data: parm,
dataType: 'json',
success : function(json) {
add_script(json.scripts);
},
error : function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest); // XMLHttpRequestオブジェクト
console.log(textStatus); // status は、リクエスト結果を表す文字列
console.log(errorThrown); // errorThrown は、例外オブジェクト
}
});
}