用ajax异步调用为何取不到值?

zkvistor 2008-10-31 02:32:27
页面上有如下两个radiobutton:
<input type="radio" name="yh1" id="yh1" value="1" onClick="StartXMLHttp() ">
参加购礼包,加一元,送名表活动
<input type="radio" name="yh1" id="yh1" value="2" onClick="StartXMLHttp()">
不参加购礼包,加一元,送名表活动
要实现点击第一个数据库里相应的金额就变为1000(原价:999的礼包),点击第二个就还是999
我用AJAX实现,代码如下:
<script language ="javascript" type ="text/javascript">
var xmlHttp;
function createXMLHttp()
{
if (window.ActiveXObject)
{
try{
xmlHttp =new ActiveXObject ("Msxml2.XMLHttp");
}
catch (e)
{
try
{
xmlHttp =new ActiveXObject ("Microsoft.XMLHttp");
}
catch (e)
{
}
}
}
else if(window .XMLHttpRequest)
{
xmlHttp =new XMLHttpRequest ();
}
return xmlHttp ;
}

function StartXMLHttp()
{

var ck=document.getElementsByName("yh1");
for(var i=0;i <ck.length;i++)
{
if(ck[i].checked==true)
{
var rd=ck[i].value;
}
}

var url="buy.asp?yh="+rd;
createXMLHttp ();
xmlHttp .open("Get",url,true);
xmlHttp.onreadyStateChange=handleState;
xmlHttp .send(null);

}
function handleState()
{
if(xmlHttp.readyState==4)
{
if (xmlHttp.Status==200)
{
alert("OK");
}

}
}
</script>

。。。。。。。
if request.QueryString("yh")=1 then
response.write("OK");
end if
上面一段代码总执行不了,不知道是哪里有问题?
向各位指教
...全文
376 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkvistor 2008-11-12
  • 打赏
  • 举报
回复
问题解决了
但是我有一个疑问,用ajax进行异步调用的时候不能提交到本页面去做处理吗?
比如 在buy.asp
function StartXMLHttp()
{

var ck=document.getElementsByName("yh1");
for(var i=0;i<ck.length;i++)
{
if(ck[i].checked==true)
{
var rd=ck[i].value;
}
}
var url="buy.asp?yh1="+rd+"&n="+Math.random();
createXMLHttp ();
xmlHttp .open("Get",url,true);
xmlHttp.onreadyStateChange=handleState;
xmlHttp .send(null);
}
function handleState()
{
var rs=document.getElementById("result");
if(xmlHttp.readyState==4)
{
if (xmlHttp.Status==200)
{
var msg=xmlHttp.responseText;
rs.innerHTML="价格总计:"+ msg+"元";

}
}
}
提交到本页面进行处理的时候 rs.innerHTML返回的不是金额而是一大堆的HTML代码,如果是提交到其他页面的话就不存在这个问题,不知道是咋回事?
zkvistor 2008-11-03
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 bhd1896 的回复:]
lz,我给你写的你看下。
我这边是得到结果了!
随便提醒一句:你的buy.asp文件htm文件是放在同一目录下吗??
[/Quote]

是在同一目录下,但是还是没有执行下面这段代码:
if request("yh")="1" then response.Write("<Script language='javascript'>alert('1')</Script>") totalcash=totalcash+zqCount
end if
zkvistor 2008-10-31
  • 打赏
  • 举报
回复
能不能都放在buy.asp页面里
bhd1896 2008-10-31
  • 打赏
  • 举报
回复
lz,我给你写的你看下。
我这边是得到结果了!
随便提醒一句:你的buy.asp文件htm文件是放在同一目录下吗??
zkvistor 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hansonboy 的回复:]
你在IE里直接执行:buy.asp?yh=1,看看结果
[/Quote]

执行了
bhd1896 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sandyxxx 的回复:]
你打印了你也看不到,你得让前台得到你返回值,前台显示

这个buy.asp程序是ajax自动调用执行,不是你点击某个连接执行的

[/Quote]

怎么可能啊 ??
  • 打赏
  • 举报
回复

你后台执行得到结果,是返回给前台然后显示的,虽然后台执行了,但是你是看不到结果的
bhd1896 2008-10-31
  • 打赏
  • 举报
回复
看我的代码!应该行了吧!?
  • 打赏
  • 举报
回复
你打印了你也看不到,你得让前台得到你返回值,前台显示

这个buy.asp程序是ajax自动调用执行,不是你点击某个连接执行的

function handleState()
{
if(xmlHttp.readyState==4)
{
var helloStr = xmlHttp.responseText;
alertobj.innerHTML=helloStr
if (xmlHttp.Status==200)
{
alert(helloStr);
}
}
}


bhd1896 2008-10-31
  • 打赏
  • 举报
回复
或者改成:

function handleState()
{
if(xmlHttp.readyState==4)
{
var helloStr = xmlHttp.responseText;
//var alertobj = document.getElementById("ddd");
// alertobj.innerHTML=helloStr
alert(helloStr);
//if (xmlHttp.Status==200)
// {
// alert("OK");
// }
}
}
</script>
  • 打赏
  • 举报
回复
那有值说明
if request.QueryString("yh")=1 then
response.write("OK");
end if
这个能执行,你没必要这样调试。但是实在后台执行,你是看不到的。

那你就点不通的按钮,执行相应的程序,返回不通的状态,看看前台能接受到不

能接受到,说明程序没问题了
bhd1896 2008-10-31
  • 打赏
  • 举报
回复
<input type="radio"  name="yh1" id="yh1" value="1" onClick="StartXMLHttp() "> 
参加购礼包,加一元,送名表活动
<input type="radio" name="yh1" id="yh2" value="2" onClick="StartXMLHttp()">
不参加购礼包,加一元,送名表活动

<span id="ddd"></span>
<script language ="javascript" type ="text/javascript">
var xmlHttp;
function createXMLHttp()
{
if (window.ActiveXObject)
{
try{
xmlHttp =new ActiveXObject ("Msxml2.XMLHttp");
}
catch (e)
{
try
{
xmlHttp =new ActiveXObject ("Microsoft.XMLHttp");
}
catch (e)
{
}
}
}
else if(window .XMLHttpRequest)
{
xmlHttp =new XMLHttpRequest ();
}
return xmlHttp ;
}

function StartXMLHttp()
{

var ck=document.getElementsByName("yh1");
for(var i=0;i <ck.length;i++)
{
if(ck[i].checked==true)
{
var rd=ck[i].value;
}
}
alert(rd);
var url="buy.asp?yh="+rd+"&n="+Math.random();
createXMLHttp ();
xmlHttp .open("Get",url,true);
xmlHttp.onreadyStateChange=handleState;
xmlHttp .send(null);
}
function handleState()
{
if(xmlHttp.readyState==4)
{
var helloStr = xmlHttp.responseText;
var alertobj = document.getElementById("ddd");
alertobj.innerHTML=helloStr
//if (xmlHttp.Status==200)
// {
// alert("OK");
// }
}
}
</script>


buy.asp

<%
yh=request("yh")
if yh = "1" then
Response.Write("1111111")
else
Response.Write("22222222")
end if
%>

zkvistor 2008-10-31
  • 打赏
  • 举报
回复
现在关键是下面这段代码不能执行,感觉request.QueryString("yh")没有取到值
if request.QueryString("yh")=1 then
response.write("OK");
end if
zkvistor 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sandyxxx 的回复:]
你alert(rd)
看看有没有值,你asp页面是从前台j传递过来,先测试前台的rd值,有没有
[/Quote]

alert(rd)有值
hansonboy 2008-10-31
  • 打赏
  • 举报
回复
你在IE里直接执行:buy.asp?yh=1,看看结果
  • 打赏
  • 举报
回复
你alert(rd)
看看有没有值,你asp页面是从前台j传递过来,先测试前台的rd值,有没有
zkvistor 2008-10-31
  • 打赏
  • 举报
回复
改了还是执行不了上述那段代码?
csover8 2008-10-31
  • 打赏
  • 举报
回复
name可以一样,但ID不能一样,是唯一的。

JS是通过ID来获取元素值的。
chenguang79 2008-10-31
  • 打赏
  • 举报
回复
ID值不能一样,这样在javascript里就认为有错误发生
shuishen408 2008-10-31
  • 打赏
  • 举报
回复
来学习下。。。。
加载更多回复(3)

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧