2012-10-22 58 views
0

我想要在條件爲真時回顯JavaScript腳本, 此腳本所在的文件通過另一頁 通過ajax調用,出於某種原因它不會回顯<script>...</script>部分。 如果我把一個普通的字符串,它可以工作,但它只是不會迴應JavaScript。如何使用php通過ajax回顯javascript腳本

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

echo $end; 

AJAX: 功能onScroll(事件){// 檢查,如果我們中的broser窗口的底部邊緣100個像素。 var closeToBottom =($(window).scrollTop()+ $(window).height()> $(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提前。

+0

你也應該表現出阿賈克斯的一部分。 Php看起來不錯。 –

+0

我不認爲Ajax的一部分是問題beceaus一切我發送通過Ajax負載,它只是不顯示的JavaScript部分。但這是它無論如何:) – Graviton

回答

0

問題是您必須通過Ajax下載的文檔位的DOM樹,並使用eval進行手動評估,因爲出於安全原因,瀏覽器不會自動解析並運行通過遠程調用嵌入的JavaScript代碼。

你可以做這樣的事情:

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

這工作像一個魅力,除了任何代碼以下不執行.. – Graviton

+0

它現在的作品,但我後來解析Facebook的XML,現在不再做了,如果我先把facebook解析XML的其餘部分該代碼不工作了... – Graviton

+0

你是什麼意思_following_?你的意思是說,我寫的代碼執行後,沒有更多的JavaScript運行在頁面上? –

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); 
    } 

這是一個小的片段代碼,你應該在你收到響應的地方注入。希望這可以幫助。