问题描述
js调用cs后台的c数组,怎样根据下拉框的值指定c数组下标?//aspx:<selectid="AreaList"onChange="a()"runat="Server"><optionvalue="1">ah</option><optionvalue="2">vv</option></select><divid="out"runat="server"></div>......<scriptlanguage="javascript"type="text/javascript">functiona(){//document.getElementById('out').innerHTML='<%=c['+document.getElementById('AreaList').value+']%>';//上一行编译不通过}</script>//cs:publicstring[]c;protectedvoidPage_Load(objectsender,EventArgse){c=newstring[20];......}
解决方案
解决方案二:
行不通换个思路吧。将c转换成js的数组,输出-取值。
解决方案三:
<selectid="AreaList"onchange="javascript:$('#out').html($('#AreaList').val());"><optionvalue="1">ah</option><optionvalue="2">vv</option></select><divid="out"></div>
如果不能用JQ<selectid="AreaList"onchange="onChange();"><optionvalue="1">ah</option><optionvalue="2">vv</option></select><divid="out"></div><scripttype="text/javascript">functiononChange(){varoptions=document.getElementById("AreaList").options;for(vari=0;i<options.length;i++){if(options[i].selected){document.getElementById("out").innerHTML=options[i].value;break;}}}</script>
如果说一定去服务端兜一圈才爽,那也应该是:<asp:DropDownListID="AreaList"runat="server"AutoPostBack="True"OnSelectedIndexChanged="c">....</asp:DropDownList>
既然开始写WEB程序,那就不要抗拒JS。
解决方案四:
不好意思,前面没看清题目。一,如果你的字符串内容不多,可以这样:publicstring[]c{get{returnnewstring[]{"我是第一个字符串","我是第二个字符串"};}}
<selectid="AreaList"onchange="javascript:$('#out').html(datas[$('#AreaList').val()-1]);"><optionvalue="1">ah</option><optionvalue="2">vv</option></select><divid="out"></div><scripttype="text/javascript">vardata="<%=string.Join(",",c)%>";vardatas;window.onload=function(){datas=data.split(",");}</script>
如果说数据中内容很多,或变化很快,需要从服务端获取,那么建议用ajax方式:新建立一个ashx文件:publicclassA:IHttpHandler{publicvoidProcessRequest(HttpContextcontext){string[]c=newstring[]{"我是第一个字符串","我是第二个字符串"};stringid=context.Request["id"];context.Response.Write(c[int.Parse(id)]);}publicboolIsReusable{get{returnfalse;}}}
aspx中写:<selectid="AreaList"onchange="onChange();"><optionvalue="1">ah</option><optionvalue="2">vv</option></select><divid="out"></div><scripttype="text/javascript">vardata="<%=string.Join(",",c)%>";vardatas;window.onload=function(){datas=data.split(",");}functiononChange(){varid=$("#AreaList").val()-1;$.post("<%=ResolveClientUrl("~/A.ashx")%>",{id:id},function(text,status){$("#out").html(text)});}</script>
解决方案五:
不知道是不是想用前台,来定义后台数组C[]的大小如果是这样1、数组C你最好用List<string>2、应该是放在PostBack之后,才进行初始化,因为你一开始是页面先要Select才确定数组长度