我想将myscript.php代码注入到我的处理程序页面。这里是源:原型Ajax.Updater评估Javascript函数和HTML
handler.php
var myArr = Array();
function myfunc(){
// some code
handleArray(myArr);
}
function handleArray(arr){
// some code
}
$("container").observe('click', function(evt){
new Ajax.Request('myscript.php', {
method:'get',
evalScripts: 'true',
onFailure: function(e){
console.log(e);
},
onSuccess: function(t){
$("container").update(t);
myfunc(arr);
}
});
});
myscript.php
<script type="text/javascript">
var myArr = Array("hello", "world");
</script>
<div id="abc">some html code</html>
基本上我已经在我的定义HANDL我的功能er页面,而myscript.php则包含处理页面处理的必要数据。虽然上面确实向myscript.php发出了一个Ajax请求,但是返回的代码没有得到评估。它显示为对象对象而不是将其视为html。我将相同的代码移植到jQuery并设置datatype:"Script"
,一切正常。虽然切换到jQuery不是我的选择,因为整个代码库都是基于原型构建的,所以我很想知道如何通过原型将返回的页面当作脚本来处理。
我注意到有一个类似的线程Prototype Ajax.Updater Eval Javascript Functions说包装作为匿名函数的功能,并打开evalJS标志将解决问题,它似乎不是一个解决方案在我的情况下,因为我有几个变量和函数宣布,我不知道如何使他们全部匿名。任何帮助将不胜感激,让我知道如果你需要更多的信息。
嗯,在我的情况下,因为变量已经是全局变量,所以把变量var是可选的。进行此更改并不能解决问题。 – 2010-12-03 21:09:45