jquery ajax在IE中传递中文参数到后台是乱码, 但是Firefox中是传递中文参数到后台是好的。如何解决,很急在线等谢谢了。

解决方案 »

  1.   

    IE高级选项中有一项默认设置是:始终发送UTF-8编码的URL
    传递参数时最好用escape()或者encodeURI()转换编码,这样可以保证服务器端准确接收参数,比如:
    location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");
    相应地,服务器端接收参数时最好解码deCode
      

  2.   

    同意楼上用escape或encodeURI转换如果以上还不行,看下http://tangy.javaeye.com/blog/828474
      

  3.   

    我已经用了 encodeURI转换 但是到服务器的端得到的是一连串的框框。我不知道      var ucn=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_ucn").val();
          var kw=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_kw").val();
          var webRoot=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_webRoot").val();
          var ucn1=encodeURI(ucn);
         alert(ucn1);
               $.post(
            "http://zengjf/zengjf/SearchPage.aspx",
            {by:by,bm:bm,bd:bd,ey:ey,em:em,ed:ed,p:pagenumber,ucn:ucn1,kw:kw,webRoot:webRoot,isAllWebSearch:isAllWebSearch},
            function(msg){
              alert(msg);
              $("#datalist").html(msg);
            }ucn1是转换后的然后传递给服务器,IE里面转换出来打印出来就是空的,传到后台就是一堆的框框,但是firefox里面没有问题。我很郁闷 搞了老半天还是没搞出来,谁帮帮我啊。谢谢了
      

  4.   

    一般IE正常用没问题,FF需要转码。
    你这个“IE里面转换出来打印出来就是空的”,说明取值就不正常了。
    1.注意一下存储的编码格式和声明的charset是否对应。
    2.把整个部分贴出来,看看哪里导致在IE里取值不正常。
      

  5.   


    alert(ucn1);
    前面加一条
    alert(ucn); 
    看看是什么内容
      

  6.   


     function jump(pagenumber)
          {      alert("here");
          var by=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_by").val();
          var bm=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_bm").val();
          var bd=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_bd").val();
          var ey=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_ey").val();
          var em=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_em").val();
          var ed=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_ed").val();
          var ucn=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_ucn").val();
          var kw=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_kw").val();
          var webRoot=$("#ctl00_m_g_52240555_d707_4a75_ae49_b6744e037986_webRoot").val();
          var ucn1=encodeURI(ucn);
          alert(ucn1);
    //      var ucn2=escape(ucn);
    //      
    //        alert(encodeURI(ucn));
          var isAllWebSearch=$("#IsAllWebSearch").val();
    //           $.ajaxSetup({
    // contentType: "application/x-www-form-urlencoded; charset=utf-8"
    //      });
          alert(by);
          alert(bm);
          alert(bd);
          alert(ey);
          alert(em);
          alert(ed);
          alert(pagenumber);
          alert(ucn);
          alert("here is ucn1");
          alert(webRoot);
          alert(isAllWebSearch);
          $.post(
    //        url: "http://zengjf/zengjf/SearchPage.aspx",
    //           http://localhost:13058/SearchPage.aspx
            "http://zengjf/zengjf/SearchPage.aspx",
            {by:by,bm:bm,bd:bd,ey:ey,em:em,ed:ed,p:pagenumber,ucn:ucn1,kw:kw,webRoot:webRoot,isAllWebSearch:isAllWebSearch},
    //        data: "by="+by+"&bm="+bm+"&bd="+bd+"&ey="+ey+"&em="+em+"&ed="+ed+"&p="+pagenumber+"&ucn="+ucn1+"&kw="+kw+"&webRoot="+webRoot+"&isAllWebSearch="+isAllWebSearch,
    //        contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
            function(msg){
              alert(msg);
              $("#datalist").html(msg);
            }
          ); 
     
          }所有的代码都在这 已经好了,但是成功之前我也没改任何的代码,好奇怪啊。
      

  7.   


    对,重点你看一下第一条,有可能是你的JS代码本身的编码格式与你的head中声明的charset不统一造成的。用notepad++等工具查看一编码,如果不是,就转换成统一的编码
      

  8.   

    Content-Type = 'text/json;charset=UTF-8'
    这个还是声明一下比较保险
      

  9.   

    我用的是sharepoint webpart调用jquery ajax访问aspx页面。
      

  10.   

    var ucn1=encodeURI(ucn);
    就是用这个编码下就好了,多谢多谢。