栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

调用从Ajax响应返回的JavaScript函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

调用从Ajax响应返回的JavaScript函数

我想以这种形式正确解释您的问题:“好的,我已经用完所有的Ajax东西了;我只想知道从那时起任何时候都可以调用插入到DIV中的Javascript函数吗?
,也就是说,我不想在上下文中将其称为“回调返回”。

好的,如果您的意思是这样,那么您可以在以下情况下,在浏览器内的页面持久性期间的任何时候调用新代码:

1)您的Ajax回调返回的Javascript代码在语法上必须可以;
2)即使将函数声明插入到

<script>
现有
<div>
元素中的块中,浏览器也不知道新函数的存在,因为声明代码从未执行过。因此,您必须
eval()
由Ajax回调返回的声明代码,才能有效地声明新函数并使它在整个页面生命周期中都可用。

即使很虚构,此代码也说明了这个想法:

<html>    <body>        <div id="div1">        </div>        <div id="div2"> <input type="button" value="Go!" onclick="go()" />        </div>        <script type="text/javascript"> var newsc = '<script id="sc1" type="text/javascript">function go() { alert("GO!") }</script>'; var e = document.getElementById('div1'); e.innerHTML = newsc; eval(document.getElementById('sc1').innerHTML);        </script>    </body></html>

我没有使用Ajax,但是概念是相同的(即使我选择确定的示例不是很聪明:-)

一般而言,我不质疑您的解决方案设计,即在单独的.js文件等中对函数进行外部化+泛化是否适当,但请注意,这样的解决方案可能会引起其他问题,尤其是在您的Ajax调用应重复执行,即,如果同一函数的上下文发生更改,或者如果要考虑已声明的函数持久性,那么也许您应该认真考虑将设计更改为该线程中建议的示例之一。

最后,如果我误解了您的问题,并且您谈论的是当您的Ajax回调返回时该函数的上下文调用,那么我的感觉是建议使用krosenvold描述的Prototype方法,因为它是跨浏览器,经过测试且功能齐全的,这可以为您提供更好的未来实施路线图。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614662.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号