0

条件が真のときに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()> $(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。

4

2 に答える 2

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

これは、応答を受信した場所に挿入する必要がある小さなフラグメント コードです。お役に立てれば。

于 2012-10-22T11:13:33.483 に答える
0

問題は、Ajax を介してダウンロードしたドキュメント ビットの DOM ツリーを調べ、 を使用して手動で評価する必要がevalあることです。これは、セキュリティ上の理由から、ブラウザーはリモート呼び出しによって埋め込まれた JavaScript コードを自動的に解析して実行しないためです。

次のようなことができます。

var scripts = domElement.getElementsByTagName("script");
for (var i = 0; i < scripts; i ++) {
    eval(scripts[i].text);
}
于 2012-10-22T11:14:18.657 に答える