Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JS插入新的JS方法_Javascript_Jquery - Fatal编程技术网

Javascript 从JS插入新的JS方法

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("

我需要从JavaScript文件调用类似php的示例

$.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();
       }
);