none
Ajax程序没有反应以及中文发送解码不成功 RRS feed

  • 问题

  • try {
                    var text= "<NewCatalog><UniqueID>-1</UniqueID><Name>我的目录1</Name><Description>我的目录1的描述</Description></NewCatalog>";
                    var url = "Default.aspx?ts=" + new Date().getTime();
                    createXMLHttpRequest();
                    xmlHttp.open("POST", url, true);
                    xmlHttp.onreadystatechange = handleStateChange;
                    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    xmlHttp.send(text);
                }
                catch (exception) {
                    alert(exception.message);
                }

     

    Stream stream = Request.InputStream;
    int streamLength = Convert.ToInt32(stream.Length);
    byte[] strArray = new byte[streamLength];
    int streamRead = stream.Read(strArray, 0, streamLength);
    string aa = System.Text.Encoding.Default.GetString(strArray);
    Response.Clear();
    Response.Write(aa);
    Response.ContentType = "text/xml";
    Response.Flush();
    Response.End();

    我在服务器端的代码上加了断点,可程序不停止就显示已经完成。
    我试着将发送的文本改成一串字母,如:“asdfqwer”,程序就可以执行,CS代码中的断点就可以调试。
    这让我很困惑。

    还有一个问题,我将中文通过send()方法发送到服务器,上面的方法得出的字符串为乱码。
    我也试了试Encoding.Unicode等其他属性都不能解码出来。
    请问这正确的应该怎么做啊?


    做最好的自己
    2009年9月13日 7:40

答案

全部回复

  • try {
                    var text= "<NewCatalog><UniqueID>-1</UniqueID><Name>我的目录1</Name><Description>我的目录1的描述</Description></NewCatalog>";
                    var url = "Default.aspx?ts=" + new Date().getTime();
                    createXMLHttpRequest();
                    xmlHttp.open("POST", url, true);
                    xmlHttp.onreadystatechange = handleStateChange;
                    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    xmlHttp.send(text);
                }
                catch (exception) {
                    alert(exception.message);
                }

     

    Stream stream = Request.InputStream;
    int streamLength = Convert.ToInt32(stream.Length);
    byte[] strArray = new byte[streamLength];
    int streamRead = stream.Read(strArray, 0, streamLength);
    string aa = System.Text.Encoding.Default.GetString(strArray);
    Response.Clear();
    Response.Write(aa);
    Response.ContentType = "text/xml";
    Response.Flush();
    Response.End();

    我在服务器端的代码上加了断点,可程序不停止就显示已经完成。
    我试着将发送的文本改成一串字母,如:“asdfqwer”,程序就可以执行。
    这让我很困惑。

    还有一个问题,我将中文通过send()方法发送到服务器,上面的方法得出的字符串为乱码。
    我也试了试Encoding.Unicode等其他属性都不能解码出来。
    请问这正确的应该怎么做啊?


    做最好的自己
    2009年9月13日 7:39
  • xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-Length", text.length);

    另外在web.config里写

    <globalization requestEncoding ="utf-8" responseEncoding="utf-8" />


    【孟子E章】
    2009年9月13日 8:32
    版主
  • 您好,如果要对url编码,建议采用escape(), encodeURL(), encodeURIComponent()
    它们的区别可以在网上搜一下。
    在服务器端可以通过Server.UrlDecode来解码。
    2009年9月13日 12:36
    版主