2017-12-01 6 views
0

directoryScanner.phpファイルからdivコンテナに取得するテキストを選択できません。だからdivコンテナに表示されることは、私はマウスで選択することはできません。javascriptでテキストを選択する方法Ajax

<div id="file_link_panel"> 
 
</div>

javascriptのコード

function dirRefresher(){ 
 
    ajax = new XMLHttpRequest(); 
 
    ajax.open("POST","directoryScanner.php"); 
 
    ajax.onreadystatechange = function(){ 
 
     if(ajax.readyState ==4 & ajax.status == 200){ 
 
      msg = this.responseText; 
 
       document.getElementById("file_link_panel").innerHTML = msg; 
 
     } 
 
    } 
 
    ajax.send(); 
 
} 
 
setInterval(dirRefresher,1000);

そしてdirectoryScanner.php

という名前のこの単純なPHPスクリプトに続きあなたはちょうどあなたが innerTextを含める必要があるので、テキストPHPから復帰
innerText innerHTML以外
+1

テキストの選択は何ですか? – epascarello

+0

「テキストを選択する」とはどういう意味ですか? – Joulss

+1

私は毎秒DOMを書き換えているので、ページをロックしていると思います。そして、うまくいけば、あなたのサーバは応答するのに十分速く、ネットワークトラフィックはゼロになります。 – epascarello

答えて

0

問題は、Ajaxの呼び出しのトンを作り、あなたが選択をしようとして、それが置き換えられているので、何度も繰り返し要素を更新しています。あなたは、タイムアウトを増やして、サーバからコールバックを取得した後で次のコールだけを発射する方が良いです。また、コンテンツが同じ場合は、htmlを置き換える必要はありません。

function dirRefresher(){ 
    var ajax = new XMLHttpRequest(); 
    ajax.open("POST","directoryScanner.php"); 
    ajax.onreadystatechange = function(){ 
     if(ajax.readyState ==4 & ajax.status == 200){ 
      var msg = this.responseText; 
      var elem = document.getElementById("file_link_panel"); 
      if(elem.innerHTML !== msg) { 
       elem.innerHTML = msg; 
      } 
      setTimeout(dirRefresher, 5000); 
     } 
    } 
    ajax.send(); 
} 

dirRefresher() 

アップデートがさらに必要な場合は、AjaxではなくWebSocketを調べる必要があります。

+0

どのように私はサーバーからコールバックを取得することができますし、機能を発射? –

+0

何が機能するのですか? – epascarello

+0

あなたは「サーバーからコールバックを受けた後、次のコールをただ発射する」と言っています。 –

0

10は、使用してみてください。これと同じように:

function dirRefresher(){ 
    ajax = new XMLHttpRequest(); 
    ajax.open("POST","directoryScanner.php"); 
    ajax.onreadystatechange = function(){ 
     if(ajax.readyState ==4 & ajax.status == 200){ 
      msg = this.responseText; 
       document.getElementById("file_link_panel").innerText= msg; 
     } 
    } 
    ajax.send(); 
} 
setInterval(dirRefresher,1000); 
+1

どのように違いがありますか? – epascarello

+0

PHPはhtmlタグのないテキストのみを返します。 innerHTMLは、テキストをHTML形式として解釈したので、innerHTMLをinnerTextに変更する必要があると思います。 –

+0

これは、ユーザーがマウスでテキストをコピーしようとするのを防ぐ方法がまだ不明である。 – epascarello

関連する問題