|

楼主 |
发表于 2011-2-16 14:26:48
|
显示全部楼层
回复 9# sunxm89
这个网站有个问题就是这个地址- http://www.njhrd.com/search/index.aspx?align=S&worckcity=%u5357%u4eac%2c&kwType=1
复制代码 在火车头中是乱码,搜索的城市不是南京,而是%u5357%u4eac%2c字符串,我用火车的源代码查看器测试post数据都是这样的,因为但在浏览器中这个地址可以请求到数据,这点就不知道怎么回事了
解决的办法是:把 “南京, ” 用encodeURIComponent()函数编码才是正确的编码字符串encodeURIComponent("南京,"),编码后是%E5%8D%97%E4%BA%AC%2C
这样正确的post地址应该是http://www.njhrd.com/search/inde ... %AC%2C&kwType=1,即搜索后地址栏的地址
搜索地址通过分析点搜索按钮,触发的函数,可以得出,当选择完搜索条件,按搜索时会触发SearchJobList()函数,下面是代码- function SearchJobList()
- {
- var
- jobType,worckcity,publishdate,workYear,salary,eduRequire,workMethod,keywords,kwType;
- var url="../search/index.aspx?align=S";
- jobType=document.getElementById("div_show").value;//职位类别
- var flag=0;
- if(jobType=="")
- {
- // alert("请选择职位类别");
- // return false;
- }
- else
- {
- flag=1;
- url+="&jobType="+encodeURIComponent(jobType);//encodeURIComponent编码职位类别
- }
- worckcity=document.getElementById("divcity_show").value;//工作地点
- if(worckcity=="")
- {
- // alert("请选择工作城市");
- // return false;
- }
- else
- {
- flag=1;
- url+="&worckcity="+encodeURIComponent(worckcity);//encodeURIComponent 编码工作地点
- }
- publishdate=document.getElementById('ddlPublishDate').options[document.getElementById
- ('ddlPublishDate').selectedIndex].value;//发布日期
- if(publishdate!="" && publishdate!="-1")
- {
- url+="&publishdate="+publishdate;
- }
- workYear=document.getElementById('ddlWorkYear').options[document.getElementById
- ('ddlWorkYear').selectedIndex].value;//工作年限
- if(workYear!="" && workYear!="-1")
- {
- url+="&workYear="+workYear;
- }
- salary=document.getElementById('ddlSalary').options[document.getElementById
- ('ddlSalary').selectedIndex].value;//月薪范围
- if(salary!="" && salary!="选择月薪范围"&& salary!="-1")
- {
- url+="&salary="+salary;
- }
- eduRequire=document.getElementById('ddlEduRe').options[document.getElementById
- ('ddlEduRe').selectedIndex].value;//学历要求
- if(eduRequire!="" && eduRequire!="-1")
- {
- url+="&eduRequire="+eduRequire;
- }
- workMethod=document.getElementById('chkWorkMethod').options[document.getElementById
- ('chkWorkMethod').selectedIndex].value;//工作类型
- if(workMethod!="" && workMethod!="-1")
- {
- url+="&workMethod="+workMethod;
- }
-
- keywords=document.getElementById("txtKeyword").value;//关键字
- if(keywords!="")
- {
- url+="&keywords="+encodeURIComponent(keywords);
- // flag=1;
- }
-
- var KWopts =document.getElementsByName("rdkwtype");
- kwType="1";
- if(KWopts[1].checked==true)
- {
- kwType="2";
- }
- else
- {
- kwType="1";
- }
- url+="&kwType="+kwType;
- if(flag==0)
- {
- alert("职位类别,工作地点至少选择一个");
- return false;
- }
- // alert(url);
- window.parent.location=url;//重定向地址栏url
- }
-
复制代码 :这个函数主要是根据用户搜索条件,重定向地址栏,而后面的参数,有些选项只有不为空或-1时,才会&组合,而职位类别和工作地点路过选择都要被encodeURIComponent编码
考虑翻页:页脚部分源码非第一页- <a id="lnkbtnFirst" href="javascript:__doPostBack('lnkbtnFirst','')">首页</a>
- <a id="lnkbtnPre" href="javascript:__doPostBack('lnkbtnPre','')">上页</a>
-
- <a id="lnkbtnNext" href="javascript:__doPostBack('lnkbtnNext','')">下页</a>
- <a id="lnkbtnLast" href="javascript:__doPostBack('lnkbtnLast','')">尾页</a></div>
复制代码 可以看到点击 上页 下页 尾页 都是触发__doPostBack函数,不同的是传递的参数,而作分页请求,要考虑下一页的,这个网站只能下一页翻页
下一页翻页::__doPostBack('lnkbtnNext','')- var theForm = document.forms['form1'];//提交的表单
- if (!theForm) {
- theForm = document.form1;
- }
- function __doPostBack(eventTarget, eventArgument) {
- if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
- theForm.__EVENTTARGET.value = eventTarget;//翻页方式,下一页是lnkbtnNext'
- theForm.__EVENTARGUMENT.value = eventArgument;
- theForm.submit();//提交表单
- }
- }
复制代码 这样post数据是:- __EVENTTARGET=lnkbtnNext&__EVENTARGUMENT=&__VIEWSTATE=[POST随机值1]&__EVENTVALIDATION=[POST随机值2]&hid_action=align%3DS%26worckcity%3D%25E5%258D%2597%25E4%25BA%25AC%252c%26kwType%3D1&head1%24hid_topID=1&div_show=&divcity_show=%E5%8D%97%E4%BA%AC%2C&ddlPublishDate=-1&ddlWorkYear=-1&ddlSalary=-1&ddlEduRe=-1&chkWorkMethod=-1&txtKeyword=&rdkwtype=1
复制代码 其中参数的意思:
hid_action-------------------地址栏当前搜索地址
div_show-------职位类别
divcity_show-------工作地点
ddlPublishDate-------发布日期
ddlWorkYear------工作年限
ddlSalary-----------月薪范围
chkWorkMethod-----------工作类型
ddlEduRe-------学历
txtKeyword---------搜索关键字
rdkwtype--------------职位1 还是企业2
我用的抓包获得数据,都是经过编码的,应该不会出错
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?加入会员
x
|