如何在后台获取AJAX传的值?

twfx7758 2008-10-15 09:41:05
前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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 runat="server">
<title>无标题页</title>
<script src="新文件夹1/AddCity.js" type="text/javascript"></script>
<script src="新文件夹1/DestinationCity.js" type="text/javascript"></script>

<script language="javascript" type="text/javascript">
var xmlHttp;
function CreateXMLObj()
{
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e2)
{
xmlHttp = false;
}
}
if(!xmlHttp && typeof XMLHttpRequest != "undefined")
{
xmlHttp = new XMLHttpRequest();
}
}

function callserver(flag)
{
CreateXMLObj();
if(flag == 1)
{
ddl = document.getElementById('<% =ddlDestination.ClientID %>');
}
var index = ddl.selectedIndex;
var ddlvalue = ddl.options[index].value;

if((ddlvalue == null) || (ddlvalue == ""))
return;
var url = "Default.aspx?ddlvalue=" + ddlvalue;
xmlHttp.onreadystatechange = alertmessage;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);

}

function alertmessage()
{
alert("成功!");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddlStateType" runat="server" Width="64px" onchange="sub_option(this, 'ddlDestination');">
<asp:ListItem Value="请选择" Selected="True">请选择</asp:ListItem>
<asp:ListItem Value="2000">国内</asp:ListItem>
<asp:ListItem Value="3000">国外</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="ddlDestination" runat="server" ClientID="ddlCity" onchange="callserver(1)" style="width:90px;">
<asp:ListItem Value="请选择">请选择</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:Label ID="Label1" runat="server"></asp:Label>
</div>
</form>
</body>
</html>

后台代码:

protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["ddlvalue"] != null)
{
Label1.Text = Request.QueryString["ddlvalue"].ToString();
}
}
...全文
1488 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangshuhui1224 2011-04-23
  • 打赏
  • 举报
回复
twfx7758 2008-10-15
  • 打赏
  • 举报
回复
赋值,隐藏,早都试过了!你在前台咋获取动态生成的城市名?
chengxu92 2008-10-15
  • 打赏
  • 举报
回复
赋值。。。隐藏域。。。然后后台获取内容
zperson 2008-10-15
  • 打赏
  • 举报
回复
System.IO.Stream instream = Page.Request.InputStream;
BinaryReader br = new BinaryReader(instream, System.Text.Encoding.UTF8);
byte[] byt = br.ReadBytes((int)instream.Length);
string args = System.Text.Encoding.UTF8.GetString(byt);
twfx7758 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lovehongyun 的回复:]
发个小例子:


HTML code
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
//以XML求取数据
//参数:
//obj,当前动作的下拉框
//fullName:要填充的下拉框
function XmlPost(obj,fullName)
{
//求取当前下拉框的值
   var svalue = obj.value;
   //定义要填充的对象
  …
[/Quote]
我不是取第一个有动作下拉框的值,我要取的是第二个动态生成的值,然后取值存入数据库
twfx7758 2008-10-15
  • 打赏
  • 举报
回复
我想在后台取到值,然后把值赋给Label,看传值成功没有,如果成果啦,我就会把传的值存入到数据库中啦
twfx7758 2008-10-15
  • 打赏
  • 举报
回复
我取不支值,设false也没有用啊
knight827 2008-10-15
  • 打赏
  • 举报
回复
<%@ Page EnableEventValidation="true" %>
设为false
twfx7758 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lovehongyun 的回复:]
发个小例子:


HTML code
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
//以XML求取数据
//参数:
//obj,当前动作的下拉框
//fullName:要填充的下拉框
function XmlPost(obj,fullName)
{
//求取当前下拉框的值
   var svalue = obj.value;
   //定义要填充的对象
  …
[/Quote]
我想把获取的值存入到数据库啊
lovehongyun 2008-10-15
  • 打赏
  • 举报
回复
发个小例子:


<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
//以XML求取数据
//参数:
//obj,当前动作的下拉框
//fullName:要填充的下拉框
function XmlPost(obj,fullName)
{
//求取当前下拉框的值
   var svalue = obj.value;
   //定义要填充的对象
   var fullObj = document.all(fullName);
  
   //定义取值地址
   var webFileUrl = "?sortid=" + svalue;
  
   //定义返回值
   var result = "";
  
   //开始取值过程
   var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
   xmlHttp.open("POST", webFileUrl, false);
   xmlHttp.send("");
   result = xmlHttp.responseText;

  //如果有取到值,则根据格式进行拆分
  //注意如果选择了第一行"请选择"空行时,是取不到值的,因此多加了一个条件
   if(result != "" && svalue != "")
   {
   //先清空原有的值
     fullObj.length=0;
    
     //拆分值成数组
     var piArray = result.split(",");
    
     //循环数组
     for(var i=0;i<piArray.length;i++)
     {
     //再拆分成ID及名称
       var ary1 = piArray[i].toString().split("|");
       //逐一添加项
       fullObj.options.add(new Option(ary1[1].toString(),ary1[0].toString()));
     }
   }
   else
   {
     //如果没有取到值,则清空要填充的下拉框的值
     fullObj.length = 0;
     fullObj.options.add(new Option("请选择",""));
   }
}
//-->
</SCRIPT>
</HEAD>
<body>
<FONT face="宋体">
<form id="Form1" method="post" runat="server">
分类
<asp:DropDownList id="mydown1" runat="server" Width="112px"></asp:DropDownList>
  名称
<asp:DropDownList id="mydown2" runat="server" Width="168px"></asp:DropDownList>
</form>
</FONT>
</body>



cs端:

string sortid = this.Request.QueryString["sortid"];
//取到这个后.你想干嘛就干嘛吧.

//做完后把你要返回的输出来即可
Response.Write(mystr);
Response.End();
twfx7758 2008-10-15
  • 打赏
  • 举报
回复
提示错误:回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

后台提取URL上的参数不是用: Request.QueryString["ddlvalue"]???

传回前台那个看不明白,呵呵,对AJAX就不熟,二级联动传值出现问题啦,才用AJAX的
lfywy 2008-10-15
  • 打赏
  • 举报
回复

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无限级联动[AJAX版]</title>
<style type="text/css">
body, td
{
font-family: 宋体;
font-size: 12px;
}
</style>
<script language="JavaScript">
function GetResult(str,classid){
/*
*--------------- GetResult(str,classid) -----------------
* GetResult(str)
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件;classid,数字,菜单级别
* 实例:GetResult(document.all.userid.value,1);
*--------------- GetResult(str,classid) -----------------
*/
//定义菜单级数,菜单ID数组,菜单对应字段数组
var MenuIdArr,MenuFieldArr,MenuClass
MenuIdArr= new Array()
MenuFieldArr=new Array()
MenuClass=4

MenuIdArr[3]="sel3"
MenuIdArr[4]="sel4"

MenuFieldArr[1]="name"
MenuFieldArr[2]="name"
MenuFieldArr[3]="name"
MenuFieldArr[4]="name"


if (window.XMLHttpRequest) { // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}

var linkurl="ajax_server.asp?classid="+classid+"&sel="+str+"&fieldname="+MenuFieldArr[classid+1]
http_request.open("GET",linkurl,false);
http_request.send(null);

//服务器端处理返回的是经过escape编码的字符串.
//在页面显示服务器查询结果

var returntxt=unescape(http_request.responseText)

//通过XMLHTTP返回数据,开始构建Select.
//BuildSel(returntxt,eval("document.all."+MenuIdArr[classid+1]))
BuildSel(returntxt,document.getElementById(MenuIdArr[classid+1]))

//============更改下下级以下菜单为空==============
var kkk
for(kkk=classid+2;kkk<=MenuClass;kkk++)
{
submenu=document.getElementById(MenuIdArr[kkk])
submenu.length=1
submenu.options[0].selected=true
}
}

function BuildSel(str,sel){
/*
*--------------- BuildSel(str,sel) -----------------
* BuildSel(str,sel)
* 功能:通过str构建Select.
* 参数:str,字符串,由服务端返回的.有特定结构"字符串1|,字符串2,字符串3"
* 也可为"字符串1序号|字符串1文本,字符串2序号|字符串2文本,字符串3序号|字符串3文本",如本例
* 参数:sel,要构建的Select
* 实例:BuildSel(unescape(oBao.responseText),document.all.sel2)
*--------------- BuildSel(str,sel) -----------------
*/
//先清空原来的数据.
sel.options.length=0;
var arrstr = new Array();
arrstr = str.split(",");
//开始构建新的Select.
sel.options.add(new Option( "-----请选择-----",""));
if(str.length>0){
for(var i=0;i<arrstr.length;i++){
//分割字符串
var subarrstr=new Array
subarrstr=arrstr[i].split("|")
//生成下级菜单
sel.options.add(new Option(subarrstr[1],subarrstr[0]));
}
sel.options[0].selected=true
}
}
</script>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#CCCCCC">
<tr bgcolor="F1F1F1">
<td height="24" colspan="2" align="center"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="24" align="center">省  份:</td>
<td><select name="sel3" id="sel3" onChange="GetResult(this.value,3)">
<option value="" selected>-----请选择-----</option>
</select></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="24" align="center">地  区:</td>
<td><select name="sel4" id="sel4">
<option value="" selected>-----请选择-----</option>
</select></td>
</tr>
<tr bgcolor="F1F1F1">
<td height="24" colspan="2" align="center" id="ajax"> </td>
</tr>
</table>
<script language="javascript">GetResult("12",2)</script>
</body>
</html>


<% @Language="JavaScript" %>
<%
function OpenDB(sdbname){
/*
*--------------- OpenDB(sdbname) -----------------
* OpenDB(sdbname)
* 功能:打开数据库sdbname,返回conn对象.
* 参数:sdbname,字符串,数据库名称.
* 实例:var conn = OpenDB("database.mdb");
*--------------- OpenDB(sdbname) -----------------
*/
var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);
var conn = Server.CreateObject("ADODB.Connection");
conn.Open(connstr);
return conn;
}
var oConn = OpenDB("ajax_data.mdb");
var sel = Request("sel");
var classid = Request("classid")
var fieldname = Request("fieldname")
var arrResult = new Array();
//var sql = "select "+fieldname+" from Demo where parentid='"+sel+"' and classid="+classid;
var sql = "select id,"+fieldname+" from Demo where parentid='"+sel+"'";
//Response.Write("alert("+sql+")")
var rs = Server.CreateObject("ADODB.Recordset");
rs.Open(sql,oConn,1,1);
while(!rs.EOF){
//遍历所有适合的数据放入arrResult数组中.
arrResult[arrResult.length] = rs(0).Value+"|"+rs(1).Value;
rs.MoveNext();
}
//escape解决了XMLHTTP。中文处理的问题.
//数组组合成字符串.由","字符串连接.
Response.Write(escape(arrResult.join(",")));
%>

示例代码,望对你有帮助!
lovehongyun 2008-10-15
  • 打赏
  • 举报
回复
你都有value了.还要名字干嘛?
tm62490309 2008-10-15
  • 打赏
  • 举报
回复
你的
function alertmessage()
{
alert("成功!");
}


最好写成
function alertmessage()
{

if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
alert("成功!");
}
}
}

如果后台有给前台传值 就在alert("成功!");这个位置 提取出来

具体写法就像我在前面所写的
lovehongyun 2008-10-15
  • 打赏
  • 举报
回复
Request["ddlvalue"]//获取你的value.

你要获取名可以把名也传过来.
tm62490309 2008-10-15
  • 打赏
  • 举报
回复
你还可以用ajax把传过去的值进行处理 把另外的值在传回到前台
string textxml;
textxml = "<response>" + "<username>" + username + "</username>" + "</response>";

Response.Clear();
Response.Write(textxml);
Response.Flush();
Response.End();


前台提取方法
var uname=xmlHttp.responseXML.getElementsByTagName("username")[0].firstChild.data;
tm62490309 2008-10-15
  • 打赏
  • 举报
回复
Request["ddlvalue"]

ddlvalue为 (var url = "Default.aspx?ddlvalue=" + ddlvalue;)这里传的值
后台用Request["ddlvalue"] 获取
twfx7758 2008-10-15
  • 打赏
  • 举报
回复
请问我在后台如何提取二级联动产生的城市名称呢?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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