如何从responseText中获取javascript代码

how do you get javascript code from the responseText?

本文关键字:获取 javascript 代码 responseText      更新时间:2023-09-26

如何将javascript代码传递到responseText?例如使用php:


<?php
echo "<script language='javascript'>
      for(i=0;i<3;i++){
          document.write(i);
      }
      </script>
     ";
?>
// output: 012
//and if you pass the php above into this responseText
document.getElementById('someId').innerHTML = xmlHTTPobj.responseText;
// there is no output

这段代码已经在没有ajax(仅php)的情况下进行了测试,并且它按预期打印,但如果将此php传递给responseText则不是。

PS:没有打字错误,没有语法错误,浏览器是:ff4 + firebug 1.7, IE8, chrome 10, opera 10,我只是想知道如何将javascript代码传递到responseText?

编辑:

PPS:请随意回答这个问题。或者这意味着你不能传递javascript代码到responseText?

这是未经测试的,直接为我(可能有缺陷)的内存,但我认为你需要eval()任何javascript为它执行像这样。然后你只需要发送回没有脚本标签的javascript。据我所知(这通常是由框架处理的),这正是我们使用JSON

将数据结构从服务器发送回客户端的方式。

我的应用程序也有这个问题。我不确定我是如何解决的,但我不得不改变我的JS库(一个非常旧的Mootools)。(从http://hotblocks.nl/js/mootools_1_11.js上的第3215行开始)

有些浏览器在javascript插入DOM时执行,有些浏览器在它被接收(Ajax调用完成)时执行,有些浏览器从不执行。因此,Mootools的解决方案是对<script>块进行正则化,分别求值内容,替换<script>块(保留它们,但为空),然后执行完整的处理程序。

我将试着设置一个小测试来说明这一点。

编辑
我找到了这个示例jsfiddle: http://jsfiddle.net/zalun/NF2jz/

它使用Mootools的Request.HTML: http://jsfiddle.net/js/lib/mootools-1.2.5-core-json-fixed.js

这部分完成了我上面所说的:

success: function(text){
    var options = this.options, response = this.response;
    response.html = text.stripScripts(function(script){
        response.javascript = script;
    });
    ...