AJAX POST 提交到asp.net页面,无法获取html页面的radio和checkbox的值,怎么才能获取呢!

wcl2222 2010-06-08 03:41:49
最近做了一个用AJAX POST提交表单的页面,发现,所有的文本框都可以接收到值,就是 radio,和checkbox标签的值无法获取,我提交的页面是html静态的,而处理数据的页面是asp.net的,这是怎么回事呢,是我的asp.net页面接收的方式不对,还是ajax本身不支持html静态的radio和checkbox选取的值!有没有办法解决!

现在我只能在前台加上对应的隐藏hidden标签,然后用户选中了radio标签的选项后,用JS赋值给hidden标签,然后再用AJAX提交,感觉这样不太安全,也不标准,大家有什么简洁的好办法呢,请高人指点,谢谢!

...全文
1649 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mngzilin 2012-11-04
  • 打赏
  • 举报
回复
request.from[""] request.param[""] request[""] request.querystring[""] ===============================
dingxianzhong 2012-11-03
  • 打赏
  • 举报
回复
[img=][/img]
luckface 2012-08-17
  • 打赏
  • 举报
回复
$("#form").Serialize()
lddmz518 2010-11-27
  • 打赏
  • 举报
回复
name="sb" id="radio" 2個是1個組嗎 怎麼name一樣 id不一樣
TaoFor 2010-11-27
  • 打赏
  • 举报
回复
JS 不会.只会JQ
孟子E章 2010-11-23
  • 打赏
  • 举报
回复
这会有问题吗》
你先alert(postedData)看是什么?是名称/值这样的格式的吗
namegz 2010-11-23
  • 打赏
  • 举报
回复
没有人回答的是正确的
Go 旅城通票 2010-06-08
  • 打赏
  • 举报
回复
获取表单数据的函数有问题,你的是用id作为建,而不是name
     //获取表单中的名值对
function getRequestBody(oForm)
{
var aParams=new Array();
for(var i=0;i<oForm.elements.length;i++)
{
var sParam=encodeURIComponent(oForm.elements[i].id)//===ID我作为建了,而不是name,但是你获取值的时候使用name的值了
sParam+="=";
sParam+=encodeURIComponent(oForm.elements[i].value);
aParams.push(sParam);
}
return aParams.join("&");
}


给个收集表单数据的代码给你参考下
function getRequestBody(f){
var params='';
for(var i=0;i<f.elements.length;i++){
if(f.elements[i].name){
switch(f.elements[i].type){
case 'hidden':
case 'password':
case 'text':
case 'textarea':
case 'select-one':params+=(params==''?'':'&')+f.elements[i].name+'='+encodeURIComponent(f.elements[i].value);break;
case 'select-multiple':tmp='';for(var p=0;p<f.elements[i].options.length;p++)if(f.elements[i].options[p].selected)tmp+=(tmp==''?'':',')+f.elements

[i].options[p].value;if(tmp!='')params+=(params==''?'':'&')+f.elements[i].name+'='+encodeURIComponent(tmp);break;
case 'radio':
case 'checkbox':if(f.elements[i].checked)params+=(params==''?'':'&')+f.elements[i].name+'='+encodeURIComponent(f.elements[i].value);break;}
}
}
return params;
}
ad0128 2010-06-08
  • 打赏
  • 举报
回复

if($("#save").attr('checked')==true){st=1;}else{st=0}
$.ajax({
type: 'POST',
data: {Type:$('#sltType').val(),St:st},
dataType: 'json',
......
})
<div class="save"><input type="checkbox" id="saveLogin" class="checkbox" checked="true"/><label for="saveLogin">记住状态</label></div>


check.ashx
string st = context.Request.Form["St"];
wcl2222 2010-06-08
  • 打赏
  • 举报
回复
我附上我的这两个测试页面的源码,大家帮我分析是什么原因吧
页面一:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Ajax POST方法提交表单</title>
<script type="text/javascript">
window.onerror=function(errorMessage,errorUrl,errorNum)
{
alert(errorMessage+errorUrl+errorNum);
}




var xmlHttp;
function createXmlHttp()
{
if(window.ActiveXObject) {
try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) { }
if (xmlHttp == null) try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) { }
}
else {
xmlHttp = new XMLHttpRequest();
}



}
function startRequest()
{
try
{
createXmlHttp();
var url="request_asp.aspx";
//var url="1111.asp";
var postedData=getRequestBody(document.forms["form1"]);

postedData=encodeURI(postedData);
postedData=decodeURI(postedData);


xmlHttp.open("post",url,true);
xmlHttp.setRequestHeader("content-length",postedData.length);//post提交设置项
xmlHttp.setRequestHeader("content-type","application/x-www-form-urlencoded");//post提交设置项
//xmlHttp.setRequestHeader('Content-type','application/x-www-form-urlencoded;charset=gb2312')

xmlHttp.onreadystatechange =onComplete;
//将名值对发送到服务器
xmlHttp.send(postedData);
}
catch(e)
{
alert(e.message);
}
}
function onComplete()
{
if(xmlHttp.readyState==4&&xmlHttp.status==200)
{
//显示结果
// document.getElementById("divResult").innerText=decodeURI(xmlHttp.responseText);//解码后的
document.getElementById("divResult").innerHTML=xmlHttp.responseText;
}
}
//获取表单中的名值对
function getRequestBody(oForm)
{
var aParams=new Array();
for(var i=0;i<oForm.elements.length;i++)
{
var sParam=encodeURIComponent(oForm.elements[i].id)
sParam+="=";
sParam+=encodeURIComponent(oForm.elements[i].value);
aParams.push(sParam);
}
return aParams.join("&");
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></head>
<body>

<form id="form1">
<p>
<label>
<textarea name="textarea" id="Text1" cols="45" rows="5"></textarea>
</label>
</p>
<p>
<input type="radio" name="sb" id="radio" value="1" />
<input type="radio" name="sb" id="radio2" value="2" />
<br />
<input id="Button1" type="button" value="POST提交" onclick="startRequest();" />
</p>
<div id="divResult"></div></form>
</body>
</html>

request_asp.aspx页面源码基本是一句:
[code=C#]

response.write ("radio值为:"+ request["sb"].ToString()");

[/code]
wcl2222 2010-06-08
  • 打赏
  • 举报
回复
谢谢楼上的,我就是这样接收的,但是取不到值啊,但是如果不用AJAX提交,可以正常接收到这些值!
孟子E章 2010-06-08
  • 打赏
  • 举报
回复
Request.Form["radioname"]
Request.QueryString["radioname"]

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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