responseText里面的js的问题。
bjwulin
2007-02-08
现在responseText都是文本型的。直接替换原来的内容。
这样就带来一个问题,就是responseText如果有js,而且需要执行,怎么办?,比如cell编辑,我用下拉树。而树生成是靠一些js。 fins的ecside做的很强大了。以前我在ecTable中做的扩展,fins都实现的非常好,感谢一个。 |
|
fins
2007-02-09
eval啊
我就是这么做的 scriptCode=r.responseText; eval(script); 我通常返回json对象 然后赋给当前叶面中的js变量 然后再处理 |
|
bjwulin
2007-02-09
但是问题是,这些responseText可能是html,js的混合。
比如页面的onload方法要执行。 |
|
fins
2007-02-09
那就别让他是混合的
让其中的那些 html代码也变成 js |
|
bjwulin
2007-02-09
但是,这样的工作量有点大。
呵呵,fins,可以参考下dojo的写法。它有个参数是什么executeJavascript设置是否执行响应文本的js. |
|
fins
2007-02-09
没太明白
你返回的代码是什么样的呢? 例如返回了: <script> alert(222); function init(){ alert("haha") } </script> <body onload="init();">hello</body> 那么你希望可以自动执行 里面的js?? |
|
bjwulin
2007-02-09
对的。这是一种可能。
|
|
fins
2007-02-09
这个想执行里面的
alert(222) 还要执行init 太难了吧 相当于一个小型的语言解释器了 这个可做不来 问题就是这样的需求往往可以通过更便捷的方式实现. 如果你的ajax返回了这样的代码 那只能说明系统在设计上出现了问题 没有为ajax设计. ajax返回的要么是 全script 要么是xml 要么是txt信息 要么是html代码(代码中可以包含脚本,但那些脚本不应该是在返回后希望立即被执行的). 我没用过dojo 我只用过prototype dwr ajaxanywhere这3个ajax相关的组件 对dojo不了解 不知道他的executeScript到底是怎么做的 |