我们正在对所有的Ajax请求处理都使用Prototype,为了使事情变得简单,我们简单地渲染HTML内容,然后使用以下函数将其分配给适当的div:
function ajaxModify(controller, parameters, div_id) { var div = $(div_id); var request = new Ajax.Request ( controller, { method: "post", parameters: parameters, onSuccess: function(data) { div.innerHTML = data.responseText; }, onFailure: function() { div.innerHTML = "Information Temporarily Unavailable"; } } ); }
但是,有时我需要在HTML响应中执行Javascript,而此方法似乎无法执行此操作。
由于种种原因,我试图将Ajax调用的功能列表保持在最低限度,因此,如果有一种方法可以修改现有功能而又不会破坏当前正在使用的所有位置,或者可以通过一种方式来修改HTML响应,会导致任何嵌入的javascript执行都很好。
值得注意的是,我已经尝试将“ evalJS:’force’”添加到该函数中,以查看它会做什么并且对任何事情都无济于事。
参数为:
evalScripts:true
请注意,您应该使用 Ajax.Updater 而不是 Ajax.Request
请参阅:http://www.prototypejs.org/api/ajax/updater
如果响应头为:Ajax.Request将仅处理JavaScript:
application / ecmascript,application / javascript,application / x-ecmascript,application / x-javascript,text / ecmascript,text / javascript,text / x-ecmascript或text / x-javascript
而Ajax.Updater将处理JS的是evalScripts:true设置。Ajax.Request适用于数据传输,例如获取JSON响应。
由于您正在更新HTML,因此无论如何都应该使用Ajax.Updater。