zoukankan      html  css  js  c++  java
  • nullnullJQuery Ajax Post传递中文乱码

    在改章节中,我们主要介绍nullnull的内容,自我感觉有个不错的建议和大家分享下

        ajax与jquery.ajax中文参数post传递乱码处置方法

        明天在做项目时,需要用到Ajax,之前我在用GET方法传递中文参数时,只需要在后台程序中设置页面编码为GB2312即中文能正常表现,可是此次由于表单项目较多,不适合用GET方法传递,只能用POST方法,但发明后台程序中设置编码为GB2312时中文还是表现的乱码。经过一番研究问题才终究得到处理。

        处理此问题的方法非常简单,只需要在JS处置参数时用escape()函数处置一下即可,而且不需要再用unescape()解码,这个方法适合POST和GET方法,详细的Ajax代码这里我不例出,这里给出用escape()函数处置参数时的代码:

        var htmer ="getcode="+escape(getcode)+"&Content="+escape(Content);  //平日我们在处置Ajax的时候会在这里直接获得参数的值,为了使中文参数不是乱码,我们只需要用escape()函数对参数处置下即可。

        问题二

        当网站页面不是utf-8编码时,ajax提交的中文便会变成乱码,处理方法如下:找到jquery.js里的contentType:application/x-www-form-urlencoded,将它改成contentType:application/x-www-form-urlencoded; charset=UTF-8就能够了。原因:未指定charset时,jquery使用ISO-8859-1,ISO8859-1,平日叫做Latin-1。Latin-1包含了书写全部西方欧洲语言不可缺乏的附加字符。jquery的ajax基本没有考虑到国际化的问题,而使用了欧洲的字符集,所以传递中文时才会出现乱码

        我很久以前一直在使用Prototype框架。在.net-GB2312或jsp教程-utf8下都使用过,从来没遇到有字符编码的问题。于是将Prototype和JQuery代码都下载上去打开研究原因。

        不同之处在于JQuery默许的contentType:application/x-www-form-urlencoded

        而Prototype则是contentType:application/x-www-form-urlencoded; charset=UTF-8

        这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1

        ISO8859-1,平日叫做Latin-1。Latin-1包含了书写全部西方欧洲语言不可缺乏的附加字符。

        JQuery的Ajax基本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题。

        而我们的UTF-8则可以处理这一问题。

        终究指需要修改JQuery的代码,显式声明contentType使用utf-8字符集,即可处理GB2312中文传递的问题。

        只需要简单的将JQuery的代码加以修改,加上charset=UTF-8就能够了,这样不需要改变改什么web.config或什么在页面中改编码什么的了,也不需要用escapc(str)再在服务端解码。英文怎么传递,中文也怎么传递。

        给段简单的代码测试一下:

        test.html: 

        每日一道理
    我拽着春姑娘的衣裙,春姑娘把我带到了绿色的世界里。

        <!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> 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
    <title></title> 
    <script type="text/网页特效" src="scripts/jquery-1.3.2.min.js"></script> 
    <script type="text/javascript"> 
    function DoAjax(){ 
    $.post("AjaxTest.asp教程x",{txt:$("#tbox1").val()}, 
    function(data){ 
    $("#AjaxResponse").text(data); 

    ); 

    </script> 
    </head>

        <body> 
    <p><a href="javascript:DoAjax();">AjaxTest</a><input name="tbox1" id="tbox1" type="text" /></p> 
    <div id="AjaxResponse"></div> 
    </body> 
    </html>

        AjaxTest.aspx: 

        <%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %> 
    <script runat="server"> 
    string parms;

        void Page_Load(object sender , EventArgs e) 

    parms=Request["txt"]; 
    if (String.IsNullOrEmpty(parms)){ 
    Response.Write("Is Null"); 
    }else{ 
    Response.Write(parms); 


    </script>

    文章结束给大家分享下程序员的一些笑话语录: 这年头的互联网真是娱乐了中国,网民们从各种各样的“门”里钻来钻去,又有好多“哥”好多“帝”,值得大家品味不已……网络经典语录,关于IT与互联网,经典与您分享!

    --------------------------------- 原创文章 By
    null和null
    ---------------------------------

  • 相关阅读:
    sabaki and leelazero
    apply current folder view to all folders
    string operation in powershell
    wirte function in powershell
    add environment path to powershell
    Module in powershell
    sql prompt
    vmware中鼠标在部分区域不能使用
    调整多个控件的dock的顺序
    行为型模型 策略模式
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3109208.html
Copyright © 2011-2022 走看看