index.html
<a href="#" onclick="window.open('zi1.htm','','status=yes,width=200,height=200')"> 子窗口1 </a> <br />
<input name="he" type="text" readonly="true">zi1.htm
<input type="button" value="关闭窗口" onclick="xs(this.value);">
<script>
function xs(obj){
window.opener.document.getElementById("he").value= obj;
window.close();
}
</script>
自己看下效果
<a href="#" onclick="window.open('zi1.htm','','status=yes,width=200,height=200')"> 子窗口1 </a> <br />
<input name="he" type="text" readonly="true">zi1.htm
<input type="button" value="关闭窗口" onclick="xs(this.value);">
<script>
function xs(obj){
window.opener.document.getElementById("he").value= obj;
window.close();
}
</script>
自己看下效果
AJAX
index.jsp
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>公交车查询系统</title>
<META content="公交车查询系统。" name=description>
<style type="text/css">
body,tr,td {
text-align: center;
font-family: 宋体;
font-size: 13px
}
</style>
<script language="JavaScript">function doChoice(choiceid){
switch (choiceid){
case 1:
var returnBusID=window.showModalDialo("./station.jsp","","dialogHeight: 350px; dialogWidth: 280px; dialogTop: 300px; dialogLeft: 300px; edge: Raised; center: Yes; help: No; resizable: No; status: No;");
if (returnBusID)
document.form1.text1.value=returnBusID;
break;}
function check2()
{
if(document.form2.text2.value=="")
{
window.alert("站点不能为空!");
window.form2.text2.focus();
return false;
}
else
{
var xmlhttp;
try{
xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');
} catch(e){
try{
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
} catch(e){
try{
xmlhttp=new XMLHttpRequest();
}catch(e){}
}
}
var rrr="";
var idno=document.form2.text2.value;xmlhttp.open("get","./stationList.jsp?_idno="+idno,true);
xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4)
if (xmlhttp.status==200)
{
//alert(xmlhttp.status);
rrr=xmlhttp.responseText;
//alert(rrr);
//if(rrr=="ok") {alert("ok") ; else alert(rrr);
//alert(rrr);
} else
{
alert("发生错误:"+xmlhttp.status);
}} xmlhttp.send(null);
if(rrr.equals(null)){
alert("次站不存在");
window.form2.text2.focus();
return false;}
}
document.form2.submit();
}
</script>
<form name="form2" method="post" action="stationshow.jsp" target=_blank>
<tr>
<td width="180">
请输入或选择站名
</td>
<td width="227">
<input type="text" value="" name="text2"
style="width:220;border: 1px solid #000000;height: 19px;font-size: 13px;"
onKeyDown="keydown()">
</td>
<td width="20">
<img name="img2" src="images/choice.gif" width="20" height="20"
border="0" style="CURSOR: hand;" onClick="javascript:doChoice(2);">
</td>
<td>
<input type="button" name="sub" value="确定" onclick="javascript:check2();">
</td>
</tr>
</form>
stationList.jsp
<%@page contentType="text/html;charset=gb2312"%>
<%
request.setCharacterEncoding("gb2312");
%>
<%@page import="java.util.*"%>
<%@page language="java"%>
<%@page import="sql.db_conn"%>
<%@page import="java.sql.ResultSet"%>
<%
String idno=request.getParameter("_idno");
String rrr=null;
//out.print(rrr);
db_conn conn = new db_conn();
conn.ConnectDB();
String sql = "select * from line";
ResultSet rs = conn.stmt.executeQuery(sql);
Vector vec = new Vector(); int column = rs.getMetaData().getColumnCount();
rs.last();
int row = rs.getRow();
//int testi=0;
for (int i = 1; i <= row; ++i) {
rs.absolute(i);
for (int j = 2; j <= column; ++j) {
rs.getString(j);
while (rs.wasNull() && j < column) {j++;rs.getString(j);}
if (rs.wasNull()) break;
if (i == 1)
{
vec.addElement(rs.getString(j).toString());
}
if (i > 2) {
if(vec.indexOf(rs.getString(j).toString())==-1) {vec.addElement(rs.getString(j).toString());}
}
}
rs.next();
}
for (int i = 0; i < vec.size(); ++i) {
if(idno.equals(vec.get(i))){
rrr="输入正确";
}
}
out.print(rrr);
%>
这个是我从数据库得到的数据。麻烦高手帮我看看到底是哪的错,我的rrr得到的是正确的结果,可是就是不向下执行了,拜托了
不需要你那么复杂的
只需要String sql = "select * from line where 字段="&idno&"";
然后判断这个是否为空记录集
为空返回false,否则返回true
得到的rrr在他的下一个语句输出得到的就是我传回来的值,但是在send(null)后面得到是 初始化的值呢?
我看的例子上得到的结果是一样的啊。而且验证好像只能验证2次。。多了就直接跳过验证了
好几天了,实在是智商有限。我已经给帖子加分了先谢过了^_^
data.js
var busIDList=new Array();
busIDList[0]="1";
busIDList[1]="2";
busIDList[2]="3";
busIDList[3]="6";
busIDList[4]="7";
busIDList[5]="8";
busIDList[6]="9";
busIDList[7]="10";
busIDList[8]="11";
busIDList[9]="易初莲花1";
busIDList[10]="易初莲花2";
busIDList[11]="易初莲花3";
busIDList[12]="易初莲花4";
busIDList[13]="易初莲花5";
busIDList[14]="大福源3";
busIDList[15]="大福源9";var busStationList=new Array();
busStationList[0]="安南庙";
busStationList[1]="坝街";
busStationList[2]="白桥";
busStationList[3]="白塔";
busStationList[4]="百花台";
busStationList[5]="百货大楼";
busStationList[6]="邦妮花园";
busStationList[7]="宝丽金";
busStationList[8]="北园(环绕)";
busStationList[9]="北园";
busStationList[10]="北门(意溪渡口)";
busStationList[11]="北门市场";
busStationList[12]="部队营区";
busStationList[13]="财政局";
busStationList[14]="昌黎路口";
busStationList[15]="长美市场";
busStationList[16]="潮州师范";
busStationList[17]="潮州宾馆";
busStationList[18]="潮州医院";
busStationList[19]="潮州西湖";
busStationList[20]="潮州海关";
busStationList[21]="池湖路口";
busStationList[22]="池湖车场";
busStationList[23]="崇礼中学";
busStationList[24]="大新乡";
busStationList[25]="大道口";
busStationList[26]="大海豚";
busStationList[27]="大桥东";
busStationList[28]="大福源";
busStationList[29]="电器市场";
busStationList[30]="电视局";
busStationList[31]="电器城";
busStationList[32]="东和";
busStationList[33]="东湖住宅";
busStationList[34]="东湖诊所";
busStationList[35]="发展银行";
busStationList[36]="枫溪水厂";
busStationList[37]="枫春路口";
busStationList[38]="枫二路口";
busStationList[39]="枫溪电影院";
busStationList[40]="枫溪广场";
busStationList[41]="枫春市场(候车亭)";
busStationList[42]="枫溪市尾";
busStationList[43]="冯厝";
busStationList[44]="凤山";
busStationList[45]="凤凰塔";
busStationList[46]="凤塘中学";
busStationList[47]="凤塘镇政府";
busStationList[48]="浮岗浮岗桥";
busStationList[49]="福安路";
busStationList[50]="富丽学校";
busStationList[51]="富丽公园";
busStationList[52]="高田";
busStationList[53]="宫前市场";
busStationList[54]="沟头";
busStationList[55]="辜厝巷";
busStationList[56]="古板头";
busStationList[57]="古巷镇政府";
busStationList[58]="古板头路口";
busStationList[59]="国税局";
busStationList[60]="韩师宿舍新区(卧石路口)";
busStationList[61]="韩师东门";
busStationList[62]="韩师宿舍区";
busStationList[63]="韩师东大门";
busStationList[64]="韩师";
busStationList[65]="韩山师院";
busStationList[66]="韩江瓷砖厂";
busStationList[67]="韩师卧石路口";
busStationList[68]="河头中心医院";
busStationList[69]="河头";
busStationList[70]="虹桥";
busStationList[71]="湖尾";
busStationList[72]="怀德市场";
busStationList[73]="辉煌家俱城";
busStationList[74]="慧如公园";
busStationList[75]="火车站";
busStationList[76]="吉怡";
busStationList[77]="吉春";
busStationList[78]="技工学校";
busStationList[79]="佳运公司";
busStationList[80]="加油站";
busStationList[81]="建设大厦";
busStationList[82]="交通局";
busStationList[83]="戒毒所";
busStationList[84]="金信大厦";
busStationList[85]="金安陶瓷";
busStationList[86]="金曼大酒店";
busStationList[87]="金丽花园对面";
busStationList[88]="金钟商场";
busStationList[89]="开元路口";
busStationList[90]="开发区管委会";
busStationList[91]="凯安娜";
busStationList[92]="康乐园";
busStationList[93]="奎元楼";
busStationList[94]="奎元住宅区";
busStationList[95]="奎元广场";
busStationList[96]="来宜小学";
busStationList[97]="利生加油站";
busStationList[98]="莲云";
busStationList[99]="莲云学校";
busStationList[100]="磷溪镇";
busStationList[101]="绿榕路服装市场";
busStationList[102]="绿榕市场";
busStationList[103]="麻仓";
busStationList[104]="南怡园";
busStationList[105]="南陇";
busStationList[106]="南桥市场";
busStationList[107]="农业银行";
busStationList[108]="欧陆家俱城";
busStationList[109]="前进路口";
busStationList[110]="桥东市场";
busStationList[111]="桥东医院";
busStationList[112]="侨苑(候车亭)";
busStationList[113]="侨光中学";
busStationList[114]="区公安局";
busStationList[115]="区政府";
busStationList[116]="趣春路口";
busStationList[117]="趣春花园";
busStationList[118]="商贸城";
busStationList[119]="社保局";
busStationList[120]="师范学校";
busStationList[121]="实验学校";
busStationList[122]="市政府";
busStationList[123]="市轧钢厂";
busStationList[124]="收费站";
busStationList[125]="书图";
busStationList[126]="双筒";
busStationList[127]="塘边乡";
busStationList[128]="塘边";
busStationList[129]="糖厂";
busStationList[130]="陶校";
busStationList[131]="腾瑞万绿花园";
busStationList[132]="体育馆";
busStationList[133]="田龙";
busStationList[134]="田中路口";
busStationList[135]="卫生学校";
busStationList[136]="卧石路口";
busStationList[137]="乌洋";
busStationList[138]="西荣路口";
busStationList[139]="西园路";
busStationList[140]="西新路口";
busStationList[141]="下津";
busStationList[142]="湘桥区政府";
busStationList[143]="祥光陶瓷";
busStationList[144]="巷尾";
busStationList[145]="新桥路(开元路口)";
busStationList[146]="新安街路口";
busStationList[147]="新乡加油站";
busStationList[148]="新摩市";
busStationList[149]="新嘉华庭";
busStationList[150]="新桥市场";
busStationList[151]="信怡园";
busStationList[152]="星光农科所";
busStationList[153]="雄英大厦";
busStationList[154]="一八八医院";
busStationList[155]="易初莲花";
busStationList[156]="意溪市场";
busStationList[157]="义井巷";
busStationList[158]="英凤";
busStationList[159]="英塘";
busStationList[160]="永泰北路";
busStationList[161]="永护路口";
busStationList[162]="玉窖";
busStationList[163]="玉兰园";
busStationList[164]="粤潮市场";
busStationList[165]="粤潮花园(候车亭)";
busStationList[166]="悦园";
busStationList[167]="云光中学";
busStationList[168]="云步";
busStationList[169]="詹厝";
busStationList[170]="镇政府";
busStationList[171]="智勇中学";
busStationList[172]="中心广场";
busStationList[173]="中心医院";
busStationList[174]="中国银行";
busStationList[175]="中津";
busStationList[176]="中心广场南";
busStationList[177]="卓府埕";
想明白
我也只是简单的看了一下。。
貌似是这里 if (xmlhttp.readyState==4)
if (xmlhttp.status==200)
{
//alert(xmlhttp.status);
rrr=xmlhttp.responseText;
//alert(rrr);
//if(rrr=="ok") {alert("ok") ; else alert(rrr);
//alert(rrr);
} else
{
alert("发生错误:"+xmlhttp.status);
}
也不知道是你贴错了,还是本身就这样写的,这两个状态值应该同时获取if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if(document.form1.text1.value=="")
{
window.alert("站点不能为空!");
window.form1.text1.focus();
return false;
}
if(document.form1.text1.value!="")
{
var xmlhttp;
try{
xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');
} catch(e){
try{
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
} catch(e){
try{
xmlhttp=new XMLHttpRequest();
}catch(e){}
}
}
var rrr="";
var idno=document.form1.text1.value;
xmlhttp.open("get","./IDlist.jsp?_idno="+idno,true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4&&xmlhttp.status==200)
{
//alert(xmlhttp.status);
rrr=xmlhttp.responseText.indexOf("1");
// alert(rrr);
} else
{
alert("发生错误:"+xmlhttp.status);
}} xmlhttp.send(null);
if(rrr==-1){alert("此路线不存在");
window.form1.text1.focus();
return false;}}
document.form1.submit();
}
上面就是我的真个验证的function(),其中rrr=xmlhttp.responseText.indexOf("1"); 是我要得到一个标志位设置的
看看有没有什么问题
stationList.jsp这个文件只需要这么简单就可以,你只是比较存在不存在,不必要那么复杂
<%
db_conn conn = new db_conn();
conn.ConnectDB();
String idno=request.getParameter("_idno");
sql="select * from table where 字段="&idno
ResultSet rs = conn.stmt.executeQuery(sql);
Vector vec = new Vector(); rs.open sql,conn,1,1
if not rs.bof then
out.print true
else
out.print false
end if %>
不知道我写的JSP对不对,哎,不玩这个东西都忘光了,大致就只需要这么多,如果格式不对的地方你改下就可以了
<%request.setCharacterEncoding("gb2312");
String flag="";
String idno=request.getParameter("_idno").toString();
int id=Integer.parseInt(idno);
db_conn conn = new db_conn();
conn.ConnectDB();
String sql = "select id from line where id="+id;
ResultSet rs = conn.stmt.executeQuery(sql);
if(rs.next()){
if(!rs.equals(null)){
flag="1";
}
}
out.print(flag);
%>
我已经按照你的建议做了,就是这么写的。很是头疼现在
xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4)
if (xmlhttp.status==200)
{
//alert(xmlhttp.status);
rrr=xmlhttp.responseText;
//alert(rrr);
//if(rrr=="ok") {alert("ok") ; else alert(rrr);
//alert(rrr);
} else
{
alert("发生错误:"+xmlhttp.status);
} } xmlhttp.send(null);
if(rrr.equals(null)){
alert("次站不存在");
window.form2.text2.focus();
return false;}
}
document.form2.submit();
}
这部分也可以简单点:function getName()
{
var rrr="";
var idno=document.form2.text2.value;
xmlhttp.open("get","./stationList.jsp?_idno="+idno);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4){
rrr=unescape(xmlhttp.responseText); }
}
xmlhttp.setRequestHeader("If-Modified-Since","0");
xmlhttp.send(null);
if(rrr==false){
alert("次站不存在");
window.form2.text2.focus();
return false;}
}
document.form2.submit();
}
}
然后你按查找时出发这个函数
先执行的alert(),然后紧接着再执行的xmlhttp.onreadystatechange = function()这样第一次就不能验证就是合理的了,但是为什么呢??
只不过是用在ASP中,但是JS不分ASP还是JSP,要分也只是后台那部分分而且你给的那网站中,他也是使用着通过按钮来触发这样一个函数的
然后大概的说下stationList.jsp这个返回的值是什么做什么用的就行了,不要发stationList.jsp这个的代码了
这个就是一个返回值的没什么好看的
function check1()
{
if(document.form1.text1.value=="")
{
window.alert("站点不能为空!");
window.form1.text1.focus();
return false;
}
if(document.form1.text1.value!="")
{
var xmlhttp;
try{
xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');
} catch(e){
try{
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
} catch(e){
try{
xmlhttp=new XMLHttpRequest();
}catch(e){}
}
}
var rrr="";
var idno=document.form1.text1.value;
xmlhttp.open("get","./IDlist.jsp?_idno="+idno,true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4&&xmlhttp.status==200)
{
//alert(xmlhttp.status);
rrr=xmlhttp.responseText.indexOf("1");
// alert(rrr);
} else
{
alert("发生错误:"+xmlhttp.status);
} } xmlhttp.send(null);
if(rrr==-1){alert("此路线不存在");
window.form1.text1.focus();
return false;} }
document.form1.submit();
}
function check1()
{
if(document.form1.text1.value=="")
{
window.alert("站点不能为空!");
window.form1.text1.focus();
return false;
}
if(document.form1.text1.value!="")
{
var xmlhttp;
try{
xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');
} catch(e){
try{
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
} catch(e){
try{
xmlhttp=new XMLHttpRequest();
}catch(e){}
}
}
var rrr="";
var idno=document.form1.text1.value;
xmlhttp.open("get","./IDlist.jsp?_idno="+idno,true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4&&xmlhttp.status==200)
{
//alert(xmlhttp.status);
rrr=xmlhttp.responseText.indexOf("1");
// alert(rrr);
} else
{
alert("发生错误:"+xmlhttp.status);
} } xmlhttp.send(null);
if(rrr==-1){alert("此路线不存在");
window.form1.text1.focus();
return false;} }
document.form1.submit();
}
<form name="form1" method="post" action="lineshow.jsp"target="_blank">
<input type="button" name="sub" value="确定" onclick=check1()>
我现在连接的是IDlist.jsp其实一样的,这个页面中得到idno,然后和数据库比较,存在就返回一个String s ="1";不存在就返回s="";大概就是这样的了
if (xmlhttp.readyState==4&&xmlhttp.status==200)
{
//alert(xmlhttp.status);
rrr=xmlhttp.responseText.indexOf("1");
// alert(rrr);
} else
{
alert("发生错误:"+xmlhttp.status);
} } 你这部分改了,改成我那样的
{
if(document.form1.text1.value=="")
{
window.alert("站点不能为空!");
window.form1.text1.focus();
return false;
}
if(document.form1.text1.value!="")
{
var xmlhttp;
try{
xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');
} catch(e){
try{
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
} catch(e){
try{
xmlhttp=new XMLHttpRequest();
}catch(e){}
}
}
var rrr="";
var idno=document.form1.text1.value;
xmlhttp.open("get","./IDlist.jsp?_idno="+idno,true);
xmlhttp.send(null);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4&&xmlhttp.status==200)
{
rrr=xmlhttp.responseText.indexOf("1");
if(rrr==-1){alert("此路线不存在");
window.form1.text1.focus();
return false;}
document.form1.submit();
//if(rrr==""){return false;}
} else
{
alert("发生错误:"+xmlhttp.status);
}}
}
}
这个是正确的,高手解决的,比较下,一会散分了
xmlhttp.open("get","./IDlist.jsp?_idno="+idno,true);
xmlhttp.send(null);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4&&xmlhttp.status==200)
{
rrr=xmlhttp.responseText.indexOf("1");
if(rrr==-1){alert("此路线不存在");
window.form1.text1.focus();
return false;}
document.form1.submit();
//if(rrr==""){return false;}
} else
{
alert("发生错误:"+xmlhttp.status);
} }
改成:
xmlhttp.open("get","./IDlist.jsp?_idno="+idno,true);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4){
var rrr=xmlhttp.responseText.indexOf("1");
if(rrr==-1){alert("此路线不存在");
window.form1.text1.focus();
return false;}
document.form1.submit();
}
}
xmlhttp.setRequestHeader("If-Modified-Since","0");
xmlhttp.send(null);