ajax 不能输出select的option.这是什么原因?

时间:2022-12-11 17:14:27
ajax服务页面
输出table的代码
Dim DateBase,connstr
  DateBase = "../action/SCshuju.mdb"
  connstr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " &Server.MapPath(DateBase)
%>
<%
response.expires=-1
sql="SELECT shuliang FROM SYdy WHERE chejian='eqchengpian' and xinghao="
sql=sql & "'" &request.QueryString("xinghao") & "' and jixing="
sql=sql & "'" & request.querystring("jixing") & "'"

set connstr=Server.CreateObject("ADODB.Connection")
connstr.Provider="Microsoft.Jet.OLEDB.4.0"
connstr.Open(Server.Mappath("../action/SCshuju.mdb"))
set rs = Server.CreateObject("ADODB.recordset")
rs.Open sql, connstr

response.write("<select>")
do until rs.EOF
  for each x in rs.Fields
    response.write("<option value='"& x.value &"'>" & x.value & "</option>")
  next
  rs.MoveNext
loop
response.write("</select>")

前台代码

<script language="JavaScript">
function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}
</script>
<script language="JavaScript">
var xmlHttp
function BZdanwei(str)

xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("您的浏览器不支持AJAX!");
  return;
  } 
xinghao="xinghao"+right(str,1)
jixing="jixing"+right(str,1) 
danwei="danwei"+right(str,1)
x=document.getElementById(xinghao).options.value
y=document.getElementById(jixing).options.value
var url="danwei_ajax.asp";
var temp
var i
var xinghao
var jixing
url=url+"?xinghao="+x;
url=url+"&jixing="+y;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}

function stateChanged()

if (xmlHttp.readyState==4)

document.getElementById("danwei1").innerHTML=xmlHttp.responseText;
}
}
</script>

通过这个没有提示错误,但是输出的select的是空的。
但是会形成select下拉列表。
    <form method="post" action="eqchengpian.asp" name="shujutijiaoB" target="_self" id="shujutijiaoB" style="float:right; width:550">
      <table border="1">
        <caption>称片入库记录表单</caption>
        <tr>
          <th scope="row">型号</th>
          <th >极性 </td>
          <th >克重</td>
          <th >入库箱数</th>
          <th >入库零数</th>
          <th >入库日期 </th>
        </tr>
<%for c=1 to hang%>
        <tr>
          <td><select name="xinghao<%=c%>" id="xinghao<%=c%>" style="margin:0; border:0; padding:0;" onChange="BZdanwei(this.name)">
            <% for i=0 to clnameSL-1 %>
            <option value="<%=cpnameUL(i)%>"><%=cpnameUL(i)%></option>
            <%next%>
            </select></td>
          <td><select name="jixing<%=c%>" id="jixing<%=c%>" onChange="BZdanwei(this.name)">
            <option value="正">正</option>
            <option value="负">负</option>
          </select></td>
          <td><div id="danwei<%=c%>">克重</div></td>
          <td><input name="RKxiangshu<%=c%>" type="text" id="RKxiangshu<%=c%>" size="6" /></td>
          <td><input name="lingshu<%=c%>" type="text" id="lingshu<%=c%>" value="0" size="6" /></td>
          <td><input name="RKriqi<%=c%>" type="text" id="RKriqi<%=c%>" value="<%=date()%>" size="6" /></td>
        </tr>
<%next%>
      </table>
      <p>
        <input type="submit" name="button" id="button" value="提   交" />
        <input type="reset" name="button2" id="button2" value="重   置" />
        <input name="tijiaopanduan" type="hidden" id="tijiaopanduan" value="2" />
      </p>
    </form>

这个是前台的一个form。其中型号也是自动形成。

16 个解决方案

#1


引用楼主 feilong5xian 的回复:
ajax服务页面
输出table的代码

这里写错了 是输出select的代码。

#2


你直接访问调用的页面danwei_ajax.asp看看输出的html代码是否正确。

#3


谢谢楼上指点,我测了一下,发现有两个问题,
开始的时候得出的rs.recordcount等于-1,
我把rs open sql,connstr改成rs open sql,connstr,1,3 得到的rs.recordcount等于0
再进一步测试发现request.querystring("jixing")为空值。
但是现在还没有搞明白为什么 request.querystring("jixing")为什么是空值,它的取值方法和xinghao是一样的呀?

#4


request.querystring("jixing")

QueryString(),这个方法的名称大小写敏感吗?

#5


都采用的是小写啊。

#6


谢谢你看的真细,我把request.querystring("jixing")改成request.Querystring("jixing")还是吧行。
VB好像对大小写不敏感。

#7


sql="SELECT shuliang FROM SYdy WHERE chejian='eqchengpian' and xinghao="
sql=sql & "'" & request.QueryString("xinghao") & "' and jixing="
sql=sql & "'" &  request.querystring("jixing") & "'"

#8


谢谢烦人的马甲,我已经改过了。还是不行。

#9


经过这些测试 发现主要问题是获取的request.Querystring("jixing")是空值。不知道传值的时候没有传过来。还是每月获取到?

#10


感觉你在AJAX代码中写的取值语句是错误的:
x=document.getElementById(xinghao).options.value
y=document.getElementById(jixing).options.value
//alert看看值是否正确
alert('x:' + x + '\n' + 'y:' + y);

如果上面弹出的值不正确的话,改为:
x = document.getElementById(xinghao).value;
y = document.getElementById(jixing).value;

#11


不过,这个好像跟select空白也没什么关系,你这个表单中的几个asp变量是哪来的啊?
比如变量hang:
<%for c=1 to hang%>

#12


结果是正确的,都是实际的值。
我在下面用aler(url)做的测试也是正确的。
现在看来是就是传递的过程中给丢的,或者在处理页面也取不到。我测试的sid都是正确的,就是中间的request.querystring("jixing")不正确。

#13


不清楚了,等高手来解。

#14


谢谢你的耐心与热心,我再找找。

#15


不完成 心里难受啊!再顶一下!

#16


现在基本可以确定是中文的错误,因为request.querystring("jixing")是中文。

#1


引用楼主 feilong5xian 的回复:
ajax服务页面
输出table的代码

这里写错了 是输出select的代码。

#2


你直接访问调用的页面danwei_ajax.asp看看输出的html代码是否正确。

#3


谢谢楼上指点,我测了一下,发现有两个问题,
开始的时候得出的rs.recordcount等于-1,
我把rs open sql,connstr改成rs open sql,connstr,1,3 得到的rs.recordcount等于0
再进一步测试发现request.querystring("jixing")为空值。
但是现在还没有搞明白为什么 request.querystring("jixing")为什么是空值,它的取值方法和xinghao是一样的呀?

#4


request.querystring("jixing")

QueryString(),这个方法的名称大小写敏感吗?

#5


都采用的是小写啊。

#6


谢谢你看的真细,我把request.querystring("jixing")改成request.Querystring("jixing")还是吧行。
VB好像对大小写不敏感。

#7


sql="SELECT shuliang FROM SYdy WHERE chejian='eqchengpian' and xinghao="
sql=sql & "'" & request.QueryString("xinghao") & "' and jixing="
sql=sql & "'" &  request.querystring("jixing") & "'"

#8


谢谢烦人的马甲,我已经改过了。还是不行。

#9


经过这些测试 发现主要问题是获取的request.Querystring("jixing")是空值。不知道传值的时候没有传过来。还是每月获取到?

#10


感觉你在AJAX代码中写的取值语句是错误的:
x=document.getElementById(xinghao).options.value
y=document.getElementById(jixing).options.value
//alert看看值是否正确
alert('x:' + x + '\n' + 'y:' + y);

如果上面弹出的值不正确的话,改为:
x = document.getElementById(xinghao).value;
y = document.getElementById(jixing).value;

#11


不过,这个好像跟select空白也没什么关系,你这个表单中的几个asp变量是哪来的啊?
比如变量hang:
<%for c=1 to hang%>

#12


结果是正确的,都是实际的值。
我在下面用aler(url)做的测试也是正确的。
现在看来是就是传递的过程中给丢的,或者在处理页面也取不到。我测试的sid都是正确的,就是中间的request.querystring("jixing")不正确。

#13


不清楚了,等高手来解。

#14


谢谢你的耐心与热心,我再找找。

#15


不完成 心里难受啊!再顶一下!

#16


现在基本可以确定是中文的错误,因为request.querystring("jixing")是中文。