2011-07-11 6 views
0

xmlhttpリクエストで使用するための最大の部分文字列実装をWebでスキャンしましたが、それ以外の場合はresponsetextが文字列として扱われていません私が何を書いていても、この最大の共通部分文字列の実装を改善するための助けが必要

txt = txt + ""; // or 
txt = new string(txt);) 

この機能は機能しますが、それはひどいです。私はあなたがこのアルゴリズムを改善するのに役立つかもしれないと思うのです。

私はXMLHttpRequestをを呼んでいるサイトは、あなたがより良いスピードのために、すべてのHTMLタグ取り除くことができますつまり、この

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<html> 
<head> 
    <title>Index of /</title> 
</head> 
<body> 
<h1>Index of /</h1> 
<ul><li><a href="/"> Parent Directory</a></li> 
<li><a href="random"> random/</a></li> 
<li><a href="random_2/"> random_1/</a></li> 
<li><a href="radnfdom"> random/</a></li> 
<li><a href="rasrdndddom_1/"> random_1/</a></li> 
<li><a href="random_43"> random/</a></li> 
<li><a href="test/"> random_1/</a></li> 
</ul> 
</body></html> 

のように見ている、私はちょうどHTMLでプレーンテキストを検索しますテキスト文書。

あなたは、アクションにhere at tdsoft.se

<html> 
<head> 
<script type="text/javascript"> 
var txt; 
var buildName = ""; 
var xmlhttp; 




function lcs(a, b) { 
    var aSub = a.substr(0, a.length-1); 
    var bSub = b.substr(0, b.length-1); 

    if (a.length == 0 || b.length == 0) { 
    return ""; 
    } else if (a.charAt(a.length-1) == b.charAt(b.length-1)) { 
    return lcs(aSub, bSub) + a.charAt(a.length-1); 
    } else { 
    var x = lcs(a, bSub); 
    var y = lcs(aSub, b); 
    return (x.length > y.length) ? x : y; 
    } 
} 

function loadXMLDoc(url,cfunc) 
{ 
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=cfunc; 
xmlhttp.open("GET",url,true); 
xmlhttp.send(); 
} 


function myFunction() 
{ 

    loadXMLDoc("http://tdsoft.se/testni.html",handleXML); 


} 
var checkState = function(xmlhttp, callback) { 

try{ 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     callback(); 
     } 
     else { 
      // Check back again 1 sec later 
      setTimeout(checkState, 1000); 
     } 
    } 
    catch(err){ 
     setTimeout(checkState, 1000); 
    } 
}; 


function handleXML() 
    { 
checkState(xmlhttp, function() { 

    txt=xmlhttp.responseText; 
buildName = "random"; 
txt = txt.replace(/<&#91;^>&#93;*>/g, ""); 
var myvar = ""; 
myvar = lcs(txt, "random"); 
document.write(myvar); 
}); 
    } 
</script> 
</head> 
<body onLoad="myFunction()"> 
</body> 
</html> 
+1

機能はどこですか?なぜあなたは実際のコードを投稿していませんでしたか? – Pointy

+0

@Pointy関数の名前は関数lcs(a、b)=) – wayne

+0

どのようなことを達成したいのですか? – mplungjan

答えて

0

をスクリプトを見ることができますが、この時に異なるアプローチを取るしたいと思うように思えます。

は、私が何をしようとするのポイントを正確にはわからないが、このようなものは次のようになりますようにあなたが何をしたいようだ:

  1. あなたは
  2. 内のリンクを解析してドキュメントを要求しますリンクリストの後

を行くために、あなたのルックアップ機能を変更した値は、そのテキスト

  • ことでそのIDをキーとするオブジェクトでそれらを文書と保存ここではシムのためのjQueryを使用して(コード例ですplicity):

    //untested! 
    var links = {}; 
    
    function successFunction(data) { 
        var aTags = data.find('a'); 
    
        aTags.each(function() { 
         var $this = $(this); 
         links[$this.attr('href')] = $this.text(); 
        }); 
    } 
    
    function lookup(id) { 
        return links[id] || ''; 
    } 
    
    $.ajax({ 
        url: 'requestPage.htm', 
        success: successFunction 
    }); 
    

    EDIT:getElementsByTagNameにあなたのXMLHttpRequest方法

  • data.find('a')

    • $.ajax

      あなたはこの非jqueryのをしたい場合は、単に以下のものを置き換えることができます

    • .each(function(){...})~var i = aTags.length; while(i--) { links[aTags[i].href] = aTags[i].innerHTML; }
  • 関連する問題