如何将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?
答案 0 :(得分:0)
这对我的(可能是有缺陷的)内存来说是未经测试的,但是我认为你需要eval()任何javascript才能像这样执行它。然后你只需发送没有脚本标签的javascript。 据我记得(这通常由框架处理),这正是我们使用JSON将数据结构从服务器发送回客户端的方式
答案 1 :(得分:0)
我的应用也遇到了这个问题。我不确定我是如何解决它的,但我不得不改变我的JS库(一个非常古老的Mootools)。 (它从http://hotblocks.nl/js/mootools_1_11.js上的第3215行开始。)
有些浏览器在插入DOM时执行javascript,有些浏览器在接收到它时执行它(Ajax调用已完成),而某些浏览器从未执行过。因此,Mootools解决方案是针对<script>
块的正则表达式,单独评估内容,替换<script>
块(保留em,但为空),然后执行完整的处理程序。
我会尝试设置一个小测试来说明这一点。
修改强>
我找到了这个例子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;
});
...