我用的是post方法,然后接收到的参数都是空值这是为什么呢,原来还有值呢,现在却接收 不到了,

解决方案 »

  1.   


    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="PostXML.aspx.cs" Inherits="ajax_xmlHttpRequest_PostXML" %><!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 type="text/javascript">
        var xmlHttp=null;      
            
            function createXMLHttpRequest() 
            { 
                if(xmlHttp == null){
                    if(window.XMLHttpRequest) {
                        //Mozilla 浏览器
                        xmlHttp = new XMLHttpRequest();
                    }else if(window.ActiveXObject) {
                        // IE浏览器
                        try {
                            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                        } catch (e) {
                            try {
                                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                            } catch (e) {
                            }
                        }
                    }
                }
            } 
            
            function openAjax() 
            {   
                if( xmlHttp == null)
                {                
                    createXMLHttpRequest();  
                    if( xmlHttp == null)
                    {
                        //alert('出错');
                        return ;
                    }
                }            
                xmlHttp.onreadystatechange=xmlHttpChange;                                   
                
                xmlHttp.open("post","Result.aspx?date="+new Date().getTime(),true);             
                 
                xmlHttp.send("<?xml version='1.0' encoding='utf-8'?><pet><type>cats</type><type>dogs</type></pet>");        } 
            
            function xmlHttpChange() 
            {         
                if(xmlHttp.readyState==4) 
                {             
                    if(xmlHttp.status==200) 
                    {                                                      
                        document.getElementById('resultDiv').innerHTML=xmlHttp.responseText; 
                    } 
                } 
            } 
        
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <input type="button" value='post' onclick='openAjax();' />
        <div id="resultDiv"></div>
        </form>
    </body>
    </html>
      

  2.   


    protected void Page_Load(object sender, EventArgs e)
        {
            Response.Clear();                              
            
            XmlDocument xmlDoc = new XmlDocument();        xmlDoc.Load(Request.InputStream);
            XmlNodeList selectedPetTypes = xmlDoc.GetElementsByTagName("type");
            String type = null;
            String responseText = "Selected Pets: ";
            for (int i = 0; i < selectedPetTypes.Count; i++)
            {
               
                type = selectedPetTypes[i].FirstChild.Value;
                responseText = responseText + " " + type;
            }
            Response.Write(responseText);
            Response.End();               
        }
      

  3.   

    这是js代码
    var html="";
    var xmlHttp;
    ///获取url中的参数
    function getUrlParameter()
    {
        var url=window.location.href;//获取当前的url
        var index=url.indexOf("?");
        var parameters;
        if(index!=-1)
        {
             parameters=url.substr(index+1);
             return parameters;
        }
        else
        {
            return "";
        }
        
           
    }
    function getContent()
    {
        var controls=document.getElementById('temp').childNodes;
        var html="";
        for(var i=0;i<controls.length;i++)
        {
            html+=controls[i].innerHTML+"<br>";
        }
        return html;
    }
    //创建XMLHttpRequest对象
    function createXmlHttpRequest()
    {
        if(window.ActiveXObject)//IE
        {
            try
            {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e)
            {
                xmlHttp=new ActiveXObject("MSXML2.XMLHTTP");
            }   
        }
        else if(window.XMLHttpRequest)//其它浏览器
        {
            try
            {
                xmlHttp=new XMLHttpRequest();
            }
            catch(e)
            {
                alert("您的浏览器不支持!")
            }
        }
    }function UserOpear(method,url,divID)
    {
        createXmlHttpRequest();   
        url=url+"?date="+new Date().getTime();
        var strSend="content="+getContent()+"&"+getUrlParameter()+"&now="+new Date().getTime();
        xmlHttp.open("POST",url,true);    
        xmlHttp.onreadystatechange=getResult;
        xmlHttp.send(strSend);   
    }
    function getResult()
    {
        if(xmlHttp.readystate==4)
        {
            if(xmlHttp.status==200)
            {
                alert(xmlHttp.responseText);
            }
        }
    }
      

  4.   

    后台代码
    <%@ WebHandler Language="C#" Class="GetTemp" %>
    using System;
    using System.Web;
    public class GetTemp : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
            //context.Response.ContentType = "text/plain";
            string  content = String.Empty ;
            string actID = String.Empty;
            content = context.Request.Params["content"];
            actID = context.Request.Params["actID"];
            WebSite.Model.UserInfo userModel = new WebSite.Model.UserInfo();
            WebSite.BLL.UserInfoBll userBll = new WebSite.BLL.UserInfoBll();
            userModel.userActID = Convert.ToInt32 (actID);
            userModel.userInfo = content ;
            if (userBll.Add(userModel) > 0)
            {
                context.Response.Write("操作成功!");
                context.Response.Flush();
                context.Response.End();
            }
            else
            {
                context.Response.Write("操作失败,稍后请重试!");
                context.Response.Flush();
                context.Response.End();
            }  
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
        }
      

  5.   

    var controls=document.getElementById('temp').childNodes; 没页面代码 ,我怎么知道temp 是什么标签啊, 它里面有什么啊
      

  6.   

    有页面,就是一个div,然后我要获得div里的内容,然后传到后台
      

  7.   


            content = context.Request.Params["content"];        
            actID = context.Request.Params["actID"];
            content = context.Request.Form["content"];
            actID = context.Request.Form["actID"];
      

  8.   

    我把发送的参数追加到url中可以接收得到,但是我要更新数据库,内容很多,所以无法使用get方法,
      

  9.   

    error:var strSend="content="+getContent()+"&"+getUrlParameter()+"&now="+new Date().getTime(); 
    send格式应该这样:send("name1=value1&name2=value2")。
    因此试试:strSend="content="+getContent()+"&actID"++getUrlParameter()+"&now="+new Date().getTime()
     
      

  10.   

    写错了,strSend="content="+getContent()+"&actID="+getUrlParameter()+"&now="+new Date().getTime()
      

  11.   

    好的,找到原因了,是因为没有设置发送头部,和接收的conten-type这个属性
    后台里加上这个context.Response.ContentType = "application/x-www-form-urlencoded";
    js中加上    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
    这样就OK了
      

  12.   

    当参数多时最好写成一个函数:
    function addPostParam(sParams, sParamName, sParamValue) {
        if (sParams.length > 0) {
            sParams += "&";
        }
        return sParams + encodeURIComponent(sParamName) + "=" 
                       + encodeURIComponent(sParamValue);
    }
      

  13.   


    context.Request.Form 并不是get 方式哦 ~ 是获得post 提交的参数context.Request.QueryString 才是获得get 方式 提交的参数哦~还有要注意的地方 就是function getUrlParameter() 

        var url=window.location.href;//获取当前的url 
        var index=url.indexOf("?"); 
        var parameters; 
        if(index!=-1) 
        { 
            parameters=url.substr(index+1); 
            return parameters; 
        } 
        else 
        { 
            return ""; 
        } 
        
          
    }  var strSend="content="+getContent()+"&actID="+getUrlParameter()+"&now="+new Date().getTime();