收录日期:2020/07/12 21:55:24 时间:2016/07/18 18:11:09 标签:ASP.NET
我发布到自己机子上,传到别人的机子上都能用,传到网上的虚拟空间里后就不能用了。

我把联动做在一个用户控件里了,代码如下:

1.LianDong.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="LianDong.ascx.cs" Inherits="User_Job.PublicInfo.LianDong" %>

<table style="width: 120px; height: 31px;font-size:12px;" cellpadding="0" cellspacing ="0">
    <tr>
        <td style="width: 291px; height: 26px; ">
            </td>
        <td style="width: 165px; height: 26px; ">
            
            <asp:DropDownList onchange="Go(this)" id="dListParent" runat="server" Height="23px">
   </asp:DropDownList></td>
        <td style="width: 146px; height: 26px">
        &nbsp;
        </td>
        <td style="width: 248px; height: 26px">
        <select id="dListChild" runat="server"></select></td>
    </tr>
</table>
 <script language="javascript" defer="defer" type="text/javascript">
         //jb函数会根据不同的浏览器初始化个xmlhttp对象
         function jb()
         {
            var A=null; 
               try 
               { 
                   A=new ActiveXObject("Msxml2.XMLHTTP"); 
                } 
            catch(e)
            { 
                  try 
                   { 
                      A=new ActiveXObject("Microsoft.XMLHTTP"); 
                   }
             catch(oc)
            { 
                     A=null 
                   } 
              } 
           if ( !A && typeof XMLHttpRequest != "undefined" ) 
            { 
               A=new XMLHttpRequest() 
             } 
           return A 
         }
         
         //下面Go函数是父列表框改变的时候调用,参数是选择的条目
         function Go(obj)
         {
            //得到选择框的下拉列表的value
           var svalue = obj.value;
            //定义要处理数据的页面
            var weburl = "PubRecuTutor.aspx?TCID="+svalue;
            //初始化个xmlhttp对象
            var xmlhttp = jb();
            //提交数据,第一个参数最好为get,第三个参数最好为true
            xmlhttp.open("get",weburl,true);
           // alert(xmlhttp.responseText);
            //如果已经成功的返回了数据
            xmlhttp.onreadystatechange=function()
            {
              if(xmlhttp.readyState==4)//4代表成功返回数据
               {
                  var result = xmlhttp.responseText;//得到服务器返回的数据
                  //先清空dListChild的所有下拉项
                 document.getElementById("<%= dListChild.ClientID %>").length = 0;
                  //给dListChild加个全部型号的,注意是Option不是option
                  document.getElementById("<%= dListChild.ClientID %>").options.add(new Option("请选择名称","000"));
                  if(result!="")//如果返回的数据不是空
                  {
                     //把收到的字符串按照,分割成数组
                     var allArray = result.split(",");
                    //循环这个数组,注意是从1开始,因为收到的字符串第一个字符是,号,所以分割后第一个数组为空
                     for(var i=1;i<allArray.length;i++)
                     {
                        //在把这个字符串按照|分割成数组
                       var thisArray = allArray[i].split("|");
                        //为dListChild添加条目
                        document.getElementById("<%= dListChild.ClientID %>").options.add(new Option(thisArray[1].toString(),thisArray[0].toString()));
                     }
                  }
               }
            }
            //发送数据,请注意顺序和参数,参数一定为null或者""
            xmlhttp.send(null);
         }
  </script>



2. LianDong.ascx.cs


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace User_Job.PublicInfo
{
    public partial class LianDong : System.Web.UI.UserControl
    {
        ///protected System.Web.UI.WebControls.DropDownList dListParent;
        ///protected System.Web.UI.WebControls.Button Button1;
        ///protected System.Web.UI.WebControls.DropDownList dListChild;

        private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
            if (!IsPostBack)
            {
                BindDrop();//如果不是提交回来就绑定列表框
            }
        }

        protected void BindDrop()
        {
            //首先我想父dropdownlist也绑定数据库,后面想没必要
            //if(!IsPostBack)
            //{
            //绑定父dListParent
            //BindParent();
            //}
            //获得传递过来的parent_id值,如果是第一次请求他为null
            string str = Request.QueryString["TCID"];
            string str1 = dListParent.SelectedValue;
            ///System.Web.UI.HtmlControls.HtmlSelect hDownParent = (System.Web.UI.HtmlControls.HtmlSelect)this.FindControl("dListParent");
            ///string str1 =Request[hDownParent.UniqueID];
            //Response.Write(str1 + "yuan");
            //如果str加个字符串!=原来的字符串则说明触发过dListParent的onchange事件
            if ((str + "abc") != "abc")
            {
                //绑定 dListChild控件
                BindChild(str);//把传来的父DropDownList的value做为参数
                //Response.Write(str);
            }
            else
            {
                BindParent(str1);
            }
        }


        protected void BindParent(string str)
        {
            //如果是第一次请求或者是刷新这个页面则根据dListParent的值来选择
            //把参数转化成int
            ///int i = Convert.ToInt32(str);
            dListChild.Items.Clear();
            dListChild.Items.Add(new ListItem("名称", "000"));
            dListParent.Items.Add(new ListItem("请选择类别", "000"));
            //得到数据库连接字符串
            string connStr = ConfigurationManager.ConnectionStrings["AdminRecuJobConn"].ConnectionString;
            //初始化个conn对象
            SqlConnection conn = new SqlConnection(connStr);
            //数据库语句
            //string commStr = string.Format("select type_value,type_text from phone_type where parent_id={0}",i);
            string commStr = string.Format("select TCID,TCName from tb_ThirdClass where scid='51015944-87DF-4026-9D39-1E8A8A79214C' order by TCID");
            //建立数据库命令对象
            SqlCommand comm = new SqlCommand(commStr, conn);
            //打开数据库
            conn.Open();
            //执行命令
            SqlDataReader dr = comm.ExecuteReader();
            //循环dr,给dListParent添加条目
            while (dr.Read())
            {
                ///dListChild.Items.Add(new ListItem(dr[1].ToString(),dr[0].ToString()));
                //也可以这样
                dListParent.Items.Add(new ListItem(dr["TCName"].ToString(), dr["TCID"].ToString()));
            }
            dListParent.Items[0].Selected = true;
            //添加下面这话的意思是当点提交按钮提交窗体的时候第二个dListChild的状态能够得到保存
            ///System.Web.UI.HtmlControls.HtmlSelect hDownChild = (System.Web.UI.HtmlControls.HtmlSelect)this.FindControl("dListChild");
            ///hDownChild.Value = Convert.ToString(Session["SubjectID"]);            
            //dListChild.SelectedValue = Request["<%= dListChild.ClientID %>"];
            dr.Close();
            conn.Close();
        }


        protected void BindChild(string str)
        {
            //通过js给包括dropdownlist任何控件添加的内容不会被保存状态
            //把参数转化成int
            ///int i = Convert.ToInt32(str);
            //定义个字符串用保存从数据库返回的数据
            string result = "";
            //先清空输出的东西
            Response.Clear();
            string connStr = ConfigurationManager.ConnectionStrings["AdminRecuJobConn"].ConnectionString;
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand comm = conn.CreateCommand();
            ///string commStr = string.Format("select type_value,type_text from phone_type where parent_id = {0}",i);
            string commStr = string.Format("select ForcID,ForName from tb_ForthClass where TCID = '{0}'", str);
            comm.CommandText = commStr;
            conn.Open();
            SqlDataReader dr = comm.ExecuteReader();
            while (dr.Read())
            {
                result += "," + dr[0].ToString() + "|" + dr[1].ToString();
                //dListChild.Items.Add(new ListItem(dr[1].ToString(),dr[0].ToString()));
            }
            //把从数据库得到的信息输出到客户端
            Response.Write(result);
            //输出完成关闭Response,以免造成不必要的输出
            Response.Flush();
            Response.Close();
            dr.Close();
            conn.Close();
        }
        #region Web 窗体设计器生成的代码
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
        }

        /// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            //this.Button1.Click += new System.EventHandler(this.Button1_Click);
            //this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
    }
}


跪求高手解决。
我发现好像是 liandong.ascx中 
var result = xmlhttp.responseText;//得到服务器返回的数据 

得不到服务器返回的数据呢.       这怎么解决呢??
应该是环境配置问题
什么错误
传到服务器不能,是不是你没安装ajax插件~
看看是不是脚本禁用或者防火墙设置
就是改变第一个下拉菜单的选项,第二个没反应
document.getElementById(" <%= dListChild.ClientID %>").options.add(new Option("请选择名称","000")); 只这条起了作用 ,第二个下拉菜单出现了  "请选择名称"。其他选项出不来。
引用 2 楼 wuyq11 的回复:
应该是环境配置问题
什么错误


你是说 虚拟主机服务器没装ajax插件是吗?
web.config不知道要不要配置
引用 7 楼 lovexilove 的回复:
web.config不知道要不要配置


怎么配置呢? 我试一下啊
楼上的,楼主是自己写的XMLHTTP,不存在服务器装不装AJAX组件与什么配置问题,楼主建议你自己拿现成的AJAX框架吧,Jquery就很好
我发现是 LianDong.ascx.cs里面的bindChild方法的 下面这句话

            //把从数据库得到的信息输出到客户端 
            Response.Write(result); 

有问题,我直接Response.Write("hhhhh");
然后传到虚拟主机上,客户端也接受不到。

但在自己机子上就能接到,传到虚拟主机里面就不行了。  这是怎么回事啊??

我提交评论后由于评论在最下边,提交之后页面,页面刷新之后,如何滚动到我发表的评论的位置那, 当代大学生 这段复制文件的代码效率很低,请大家帮忙提高他的效率。 这个程序怎么实现? 输出包含文件怎么写 急,在线等!!! java实现导出excel 导出后的excel一打开 就报“无法读取文件”的错误,请大虾帮忙啊 XML中引入外部DTD为什么不能验证通过? 怎样透过代理服务器传参数??望高手指点。 vb.net初学:这段代码提示很多未定义错误 北京哪里有好的又大的书店啊? frxReport与adoquery如何连接 有关位图背景透明的问题??????? 远程数据更新后的同步显示 VC+Dao数据库开发对话框程序 高手指教,分可以加 请问: onMouseOver可以有和link_to接续生成LINK的用法,onClick是否有和link_to接续生成LINK的用法? 严格的拼音排序法 FCKeditor 2.51 无法上传图片 oracle 多值判断查询问题请教,谢谢! 关于一个FLASH CS3的问题 用过C1FlexGrid这个控件的大哥帮个忙 RDLC报表 饼图显示百分比的问题 求救关于appfuse (spring+hibernate)多表查询? ▓▓▓ 第二次給女孩子拒绝,应该怎么做?(5) ▓▓▓ 定时刷新有时候不起作用?代码如下,请高手指教 JTable可以绑定数据,但是修改table中的数据,如何提交到数据库? 关于\"术语\",提个问题,顺便散点分... [调查]你为什么使用Linux? 如何在js中取request中的属性? 建库时日志路径是怎样的?