请教一个b/s模式的问题,在线等,急!!! 我的页面有一个按钮,点击这个按钮就会执行抓取的工作,我想抓取一条,在页面的textbox中显示一条,但是现在都是执行抓取完毕后,textbox的内容才显示,有没有方法,可以抓取一条,页面显示一条,是b/s模式,请大侠支招 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ajax去抓取,或者定时器。b/s程序和c/s程序是有本质差别的。不要用c/s的思想去考虑b/s 你可以参考定时器的例子http://blog.csdn.net/net_lover/article/details/4546586如果使用ajax做,你可以返回之后再去执行下一个任务,如此循环就可以了了 好的,之前用json返回,也不行,如果有好的代码,请高手贴出来,我学习一下,谢谢 你自己不是说出思路了吗》.ajax({ url: "test.aspx", success: function(){ //显示到textbox,然后执行一次抓取 }}); 本帖最后由 Sandy945 于 2011-12-01 16:55:27 编辑 js+ajax用js定时去调用ajax的方法ajax方法就是去执行你的数据每条显示(或者用bool来返回判断一条数据加载是否完成)然后textbox绑定显示注意控制好时间 但是我有很多类别,而且在for循环里取类别再抓取,所以,用ajax怎么弄,我用的还是执行完了再显示,这是前台的js:$.ajax({ type: "POST", url: "google.aspx", success: function(msg){ var m=msg.split("<")[0]; alert(m); }});这是后台方法 public void searchCate() { string[] str = keyword.Split('、'); for (int i = 0; i < str.Length; i++) { string catename = str[i]; string url = "http://www.google.com.hk/search?hl=zh-CN&source=hp&q=" + Server.UrlEncode(catename.Trim()); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; HttpWebResponse respone = (HttpWebResponse)request.GetResponse(); Stream resStream = respone.GetResponseStream(); Encoding encoding = Encoding.GetEncoding("gb2312"); StreamReader reader = new StreamReader(resStream, encoding); string resphtml = reader.ReadToEnd().ToString(); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(resphtml); HtmlNode navNode = doc.GetElementbyId("gbz");//或gbw string strs = getContext("//ol/li[@class='g']/h3[@class='r']/a", navNode, catename);//取第一页的内容 resStream.Close(); Response.Write("str:" + strs); Thread.Sleep(5000); } } 阿非,你那个httpcontext怎么传啊 Handler.ashx.cs不要添加页面,新建Generic Handler 一般处理程序 我是这么写的,我不知道Handler中的Server.UrlEncode用什么可以代替: public void ProcessRequest (HttpContext context) { string[] str = keyword.Split('、'); for (int i = 0; i < str.Length; i++) { string catename = str[i]; string url = "http://www.google.com.hk/search?hl=zh-CN&source=hp&q=" +Server.UrlEncode(catename.Trim()); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; HttpWebResponse respone = (HttpWebResponse)request.GetResponse(); Stream resStream = respone.GetResponseStream(); Encoding encoding = Encoding.GetEncoding("gb2312"); StreamReader reader = new StreamReader(resStream, encoding); string resphtml = reader.ReadToEnd().ToString(); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(resphtml); HtmlNode navNode = doc.GetElementbyId("gbz");//或gbw string strs = getContext("//ol/li[@class='g']/h3[@class='r']/a", navNode, catename);//取第一页的内容 resStream.Close(); context.Response.Write("<script type='text/javascript'>parent.callBack(" + strs + ");</script>"); context.Response.Flush(); System.Threading.Thread.Sleep(1000); } 应该用这个吧?context.Server.UrlEncode 用 HttpUtility.UrlEncodecontext.Response.Write("<script type='text/javascript'>parent.callBack(" + strs + ");</script>");=》context.Response.Write("<script type='text/javascript'>parent.callBack(" + strs[i] + ");</script>"); 你可以先运行我的那个DEMO 看下效果~ 你的那个也有问题,报网页错误详细信息用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.2)时间戳: Thu, 1 Dec 2011 10:01:51 UTC消息: 缺少 ')'行: 1字符: 21代码: 0URI: http://localhost:59015/CaiJiTools/Handler.ashx 呃。。哪里有问题,我是考过来的啊 context.Response.Write("<script type='text/javascript'> parent.callBack(" + strs.ToString() + ");</script>"); context.Response.Flush();就是考的你发的源码 .aspx 页面呢 也是一样的么 难道parent.callBack(" + i.ToString() + ");这个的参数只能传Int类型? 额~ 这样改context.Response.Write("<script type='text/javascript'>parent.callBack('" + i.ToString() + "');</script>");-------------------传数值不用加'' 字符串要加'' 额 (⊙o⊙)…你的字符串中有'context.Response.Write("<script type='text/javascript'>parent.callBack(\"" + i.ToString() + "\");</script>");用 \" 替换' <script type='text/javascript'>parent.callBack('url:[http://shop.tompda.com/]---title:[TomPDA数码交易平台]---score:0分url:[http://bbs.dospy.com/forum-141-1.html]---title:[个人闲置数码交易区- 塞班智能手机论坛-全球最大的综合智能手机中文论 ...]---score:0分');</script>这样的格式有问题? 一次性更改“常量表”全部字段,不按ID,update如何实现? ASP.NET在IE浏览器中显示一片空白,在线等急急急急 在线等式待帮忙,网站应用程序中的服务器错误 问一个登陆与DATASET的问题 获取DataGrid超链接列里所选中的值的问题? 访问UNIX系统上的FTP,路径出现变化。 web service十万火急的问题,高手救命 hyperlink imageurl与text属性的问题 XML问题,《asp.net从入门到精通》的例子 88分求一WebControls1.0中TreeView控件的例程,请打包发到我的邮箱。 各位细心人士,进来帮帮忙,为什么会出现相同的页面?(自认为没有传错值,没有写错条件) 求一个.net 的WEB编辑器
http://blog.csdn.net/net_lover/article/details/4546586如果使用ajax做,你可以返回之后再去执行下一个任务,如此循环就可以了了
你自己不是说出思路了吗》.ajax({
url: "test.aspx",
success: function(){
//显示到textbox,然后执行一次抓取
}
});
用js定时去调用ajax的方法
ajax方法就是去执行你的数据每条显示(或者用bool来返回判断一条数据加载是否完成)
然后textbox绑定显示
注意控制好时间
type: "POST",
url: "google.aspx",
success: function(msg){
var m=msg.split("<")[0];
alert(m);
}
});
这是后台方法
public void searchCate()
{ string[] str = keyword.Split('、');
for (int i = 0; i < str.Length; i++)
{
string catename = str[i];
string url = "http://www.google.com.hk/search?hl=zh-CN&source=hp&q=" + Server.UrlEncode(catename.Trim());
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
HttpWebResponse respone = (HttpWebResponse)request.GetResponse();
Stream resStream = respone.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("gb2312");
StreamReader reader = new StreamReader(resStream, encoding);
string resphtml = reader.ReadToEnd().ToString();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(resphtml);
HtmlNode navNode = doc.GetElementbyId("gbz");//或gbw
string strs = getContext("//ol/li[@class='g']/h3[@class='r']/a", navNode, catename);//取第一页的内容
resStream.Close();
Response.Write("str:" + strs);
Thread.Sleep(5000);
} }
string[] str = keyword.Split('、');
for (int i = 0; i < str.Length; i++)
{
string catename = str[i];
string url = "http://www.google.com.hk/search?hl=zh-CN&source=hp&q=" +Server.UrlEncode(catename.Trim());
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
HttpWebResponse respone = (HttpWebResponse)request.GetResponse();
Stream resStream = respone.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("gb2312");
StreamReader reader = new StreamReader(resStream, encoding);
string resphtml = reader.ReadToEnd().ToString();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(resphtml);
HtmlNode navNode = doc.GetElementbyId("gbz");//或gbw
string strs = getContext("//ol/li[@class='g']/h3[@class='r']/a", navNode, catename);//取第一页的内容
resStream.Close();
context.Response.Write("<script type='text/javascript'>parent.callBack(" +
strs + ");</script>");
context.Response.Flush();
System.Threading.Thread.Sleep(1000);
}
strs + ");</script>");
=》
context.Response.Write("<script type='text/javascript'>parent.callBack(" +
strs[i] + ");</script>");
时间戳: Thu, 1 Dec 2011 10:01:51 UTC
消息: 缺少 ')'
行: 1
字符: 21
代码: 0
URI: http://localhost:59015/CaiJiTools/Handler.ashx
context.Response.Flush();就是考的你发的源码
i.ToString() + ");这个的参数只能传Int类型?
额~ 这样改context.Response.Write("<script type='text/javascript'>parent.callBack('" +
i.ToString() + "');</script>");
-------------------
传数值不用加'' 字符串要加''
i.ToString() + "\");</script>");用 \" 替换'
url:[http://bbs.dospy.com/forum-141-1.html]---title:[个人闲置数码交易区- 塞班智能手机论坛-全球最大的综合智能手机中文论 ...]---score:0分
');</script>这样的格式有问题?