找回密码
 新建账号

[JS] 让浏览器执行ajax返回的js代码

[复制链接]
php 发表于 2014/3/19 15:21 | 显示全部楼层 |阅读模式
ajax使用responseText返回的数据中的js代码是不能直接执行的,要让ajax返回的js执行起来,需要考虑两种情况。
情况一:ajax 返回的数据是纯js代码,并且不含<script>标签对
这种情况是最简单的,直接使用eval()函数就行了,处理 ajax 的核心代码如下
  1. ajax.onreadystatechange=function(){
  2.         if(ajax.readyState==4&&ajax.status==200){
  3.                 eval(ajax.responseText);
  4.         }
  5. };
复制代码
情况二:返回的数据中既有html代码也有js代码
这种情况需要用正则将ajax返回数据中的<script>标签对匹配出来,使用情况一中的方法eval,然后再删除ajax返回数据中的这些JS代码。
处理 ajax 的核心代码如下
  1.                 ajax.onreadystatechange=function(){
  2.                         if(ajax.readyState==4&&ajax.status==200){
  3.                                 var rs=ajax.responseText;
  4.                                 var reg=/<\s*script\s*[^>]+>([\s\S]+?)<\/script>/gi;
  5.                                 var ms;
  6.                                 while(ms=reg.exec(rs)){
  7.                                         eval(ms[1]);
  8.                                 }
  9.                                 rs=rs.replace(reg,'');
  10.                                 document.getElementById('show').innerHTML = rs;
  11.                         }
  12.                 };
复制代码
情况三:ajax 返回的数据中只有由<script>标签对包裹的js代码
这种情况只要用函数删除<scrip>标签对再eval()就行了,原理和上面两种其实是一样的。

手机版|轻松E站

GMT+8, 2024/4/19 07:15

快速回复 返回顶部 返回列表