如何通过ajax用php回显javascript脚本

时间:2012-10-22 11:02:43

标签: php javascript ajax

我希望在条件为真时回显javascript脚本, 此脚本所在的文件是通过另一页的ajax调用的 由于某种原因,它不会回应<script>...</script>部分。 如果我把常规字符串放在那里它可以工作,但它不会回应javascript。

$max = $int + 10;
  if($max >= $num_rows){
    $end = "<script>var end=1</script>";
  } else {
    $end = "<script>var end=0</script>";
  }

 echo $end;

AJAX:     function onScroll(event){               //检查我们是否在更大的窗口底边的100像素范围内。               var closeToBottom =($(window).scrollTop()+ $(window).height()&gt; $(document).height() - 100);

          if(closeToBottom) {

            if(end==0){
             // GET THE 10 NEXT ITEMS;
              if (window.XMLHttpRequest)
                 {// code for IE7+, Firefox, Chrome, Opera, Safari
                 xmlhttp=new XMLHttpRequest();
                 }
               else
                 {// code for IE6, IE5
                 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                 }
               xmlhttp.onreadystatechange=function()
                 {
                 if (xmlhttp.readyState==4 && xmlhttp.status==200)
                   {
                   //document.getElementById("tiles").innerHTML=xmlhttp.responseText;




                         $('#tiles').append(innerHTML=xmlhttp.responseText);
                         int = int+10;
                         // Clear our previous layout handler.
                         if(handler) handler.wookmarkClear();

                         // Create a new layout handler.
                         handler = $('#tiles li');
                         handler.wookmark(options);


                         $(function() {
                            // Select all links whose attribute rel starts with lightbox
                            $('a[rel^=lightbox]').lightBox();
                         });


                           FB.XFBML.parse();

                   }

                 }
            } 
               $.extend({
                    getUrlVars: function(){
                      var vars = [], hash;
                      var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
                      for(var i = 0; i < hashes.length; i++)
                      {
                        hash = hashes[i].split('=');
                        vars.push(hash[0]);
                        vars[hash[0]] = hash[1];
                      }
                      return vars;
                    },
                    getUrlVar: function(name){
                      return $.getUrlVars()[name];
                    }
                  });

                  var request = $.getUrlVar('item');

                  if(request!=null){
                    var allR = "?int="+int+"&item="+request;
                  } else {
                    var allR = "?int="+int;
                  }


               xmlhttp.open("GET","tiles.php"+allR,true);
               xmlhttp.send();


             }

        };

有人能解决这个问题吗? Thx提前。

2 个答案:

答案 0 :(得分:0)

使用javascript中的eval()加载javascript。只需查看以下示例

   var div = document.getElementById("tiles");
   div.innerHTML =xmlhttp.responseText;
   var x = div.getElementsByTagName("script"); 
   for(var i=0;i<x.length;i++)
   {
       eval(x[i].text);
   }

这是一个小片段代码,您应该在收到响应的地方注入。希望这会有所帮助。

答案 1 :(得分:0)

问题是您必须浏览通过Ajax下载的文档位的DOM树并使用eval手动评估它,因为出于安全考虑,浏览器不会自动解析并运行通过远程嵌入的JavaScript代码呼唤你。

您可以这样做:

var scripts = domElement.getElementsByTagName("script");
for (var i = 0; i < scripts; i ++) {
    eval(scripts[i].text);
}