我已经在网上扫描了我在xmlhttp请求中使用的最大子字符串实现,但是我发现只有1个有效,在其他情况下,无论我写的是什么,都没有将responsetext视为字符串:
txt = txt + ""; // or
txt = new string(txt);)
这个功能有效,但速度很慢。我只是想知道你是否编码专家可以帮我改进这个算法。
我称之为xmlhttprequest的网站看起来像这样
<!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标签以获得更好的速度,我只会在html文本文档中搜索纯文本。
您可以观看脚本[{3}}
<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(/<[^>]*>/g, "");
var myvar = "";
myvar = lcs(txt, "random");
document.write(myvar);
});
}
</script>
</head>
<body onLoad="myFunction()">
</body>
</html>
答案 0 :(得分:0)
好像你想采取不同的方法。
我不确定你想要做什么,但似乎这样的事情就是你想要的:
这是一个代码示例(为简单起见使用jQuery):
//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
});
编辑:
如果你想做这个非jquery,你可以替换以下内容:
$.ajax
到您的XMLHttpRequest方法data.find('a')
至getElementsByTagName
.each(function(){...})
至var i = aTags.length; while(i--) { links[aTags[i].href] = aTags[i].innerHTML; }