Javascript 从JS插入新的JS方法
我需要从JavaScript文件调用类似php的示例Javascript 从JS插入新的JS方法,javascript,jquery,Javascript,Jquery,我需要从JavaScript文件调用类似php的示例 $.post("my.php", function(data) { data; // data is string "function Alert(){ alert("text"); };" } ); 所以从php我得到了新的JS函数。类似于示例函数Alert(){Alert(“text”);} 我可以将该功能插入加载的js文件吗?怎么做呢?试试eval $.post("
$.post("my.php",
function(data)
{
data; // data is string "function Alert(){ alert("text"); };"
}
);
所以从php我得到了新的JS函数。类似于示例函数Alert(){Alert(“text”);}
我可以将该功能插入加载的js文件吗?怎么做呢?试试eval
$.post("my.php", function(data)
{
eval(data); // data is string "function Alert(){ alert("text"); };"
}
);
您需要的是
eval
函数,它将字符串计算为JS代码:
(请小心,因为存在明显的安全问题。)如果您必须这样做,我建议不要将所有文本发回。只要把尸体送回去:
alert("text");
然后你可以这样做:
$.post('my.php', function(data) {
new Function(data) ();
});
通过将代码包装到函数中,您(在某种程度上)包含了可能由简单的“eval()”引起的奇怪之处。(您也可以在它自己的匿名函数中使用“eval()”,但我很难推荐您使用“eval()”)
现在,如果希望保留函数以备以后调用,则可以执行以下操作:
$.post('my.php', function(data) {
window['newFunction'] = new Function(data);
});
然后,您可以随时将其称为
window.newFunction()
。将dataType
设置为脚本,让jQuery对其进行计算
“script”:以JavaScript形式计算响应,并以纯文本形式返回
使用:
或:
请求是否需要是一个帖子?如果没有,您可以使用
这与:
$.ajax({
url: 'my.php',
success: function(data){
}
dataType: 'script'
});
此方法使用jQuery而不是
eval()
如果您知道您将从php获取一个新函数,那么您应该能够在获取该函数时将其实例化:
$.post("my.php",
function(data){
data();
}
);
我将避免
eval
b/c安全问题 这不是马上就可以运行这个函数吗?我不认为这是OP想要的。你的猜测和我的一样好:-)OP非常稀少。你不能那样做data
是一个字符串,您不能使用这样的字符串。好的,对php和ajax请求不太熟悉。那么JSONP解决方案呢?
$.getScript('my.php', function(data){
});
$.ajax({
url: 'my.php',
success: function(data){
}
dataType: 'script'
});
$.post("my.php",
function(data){
data();
}
);