jQuery ajax传递特殊字符串例子

当你用ajax传递值到服务器端,如果值中包含特殊字符串如+,&等,在服务器端获取的结果可能就会出现差异,因为这些字符有其它用途,如“+”表示连接符,在转义后你获取到的就是空格。

可以看看这些特殊字符与十六进制的关系:

+ 空格 / ? % & = #
%2B %20 %2F %3F %25 %26 &3D %23

如果变量中确实需要包含这些特殊字符,请用encodeURIComponent()函数过滤,它会对这些字符编码,服务器端是会被自动解码的,不需要处理。

另外,尽量提交json格式数据 如 {a:"aaa", b:"bbb"}  而非 "a=aaa&b=bbb"

例子

 代码如下 复制代码

<script type="text/javascript">
   //alert("你好");
   function good(){
       //alert("您好 Ajax");
   var myurl = document.getElementById("txtUrl").value;
   var mydata = {"URL" : myurl};
   alert(myurl);
   var jsonData = {"ClientName":"爱&国","URL":"http://192.168.1.8:9080/GeoSearch?Request=geo&level=geometry&ClientName=美国"};
 
   $.ajax({
   type: "POST",
   //ContentType: "text/xml;utf-8",//这里需要加个utf-8
   //dataType:"xml",
   url: "Tserver",
   //dataType:"xml",
   data:mydata,
   //data:jsonData,
   //data:{"ClientName":"爱&国","URL":"http://192.168.1.8:9080/GeoSearch?Request=geo&level=geometry&ClientName=美国"},
   //data: "ClientName=J/&o#爱国美丽&##hn@@@@人&location=Boston",
   success: function(data, textStatus){
     document.getElementById("g").value=data;
     //alert(data);
     alert(jsonData);
   },
   error:function (XMLHttpRequest, textStatus, errorThrown) {
    // 通常 textStatus 和 errorThrown 之中
    // 只有一个会包含信息
    //this; // 调用本次AJAX请求时传递的options参数
   // alert("bad");
    alert(textStatus);
    //alert(errorThrown);
}
  
});
   }
</script>
</head>
<body>
       <div id="url">
          资源地址 :<input type="text" size="50" value="" id="txtUrl" /><br />
          资源名字 :<input type="text" size="50" value="" id="txtName" />
       </div>
       <input type="button" value="Ajax请求" onclick=good() />
       <br />
       <TextArea rows="10" cols="90"  id="g"></TextArea>
       <div>
       </div>
      
</body>
</html>

服务器端:

 代码如下 复制代码

package test;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;

public class Tserver extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;

 public Tserver() {
  super();
 }    
 

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  this.doPost(request, response);
 }   
 

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   response.setContentType("text/html");
   //response.setContentType("text/xml");
   //response.setContentType("application/xml");
   response.setCharacterEncoding("UTF-8");
   request.setCharacterEncoding("UTF-8");
   //request.setCharacterEncoding("UTF-8");
      //String ServerName = request.getParameter("ClientName");
   String ServerName = request.getParameter("URL");
      System.out.println(ServerName);
      String responseText1 = "your name is:   "+ServerName+ "   for ever from server";
      PrintWriter out = response.getWriter();
      out.println("<root>");
      out.println(responseText1);
      out.println("</root>");
      out.close();
 }          
}

时间: 2024-10-01 23:07:19

jQuery ajax传递特殊字符串例子的相关文章

ASP.NET jquery ajax传递参数的实例_javascript技巧

第一种:GET传递 前台 ajax   GET 传递 :即在请求的地址后面加上参数,URL地址长度有显示,安全性低 后台接收:Request.QueryString["参数名字"]! 例如: function LoadBar(id) { var project = id; var month = $("#txtMonth").val(); $.ajax({ type: "GET", async: false, url: 'GetProjectSc

jquery ajax传递中文参数乱码问题及解决方法说明

 本篇文章主要是对jquery ajax传递中文参数乱码问题及解决方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 jQuery传递中文参数乱码,原因是默认的传递方式没有采用UTF-8,所有我们可以在传递参数的时候对参数进行编码,然后再操作,代码如下,红色的代码为传递的参数,已标注    代码如下: smsubmitclick = function(){    $(document).ready(function(){        var name = $("#txt_name&q

Jquery ajax传递复杂参数给WebService

Jquery ajax传递复杂参数给WebService using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; namespace Entity {     [DataContract]     public class User     {         [DataMember]         publ

jQuery Ajax中数组 字符串 数字 对象的处理例子

jquery的工具函数,封装了比较常用的字符串.数字.数组.对象的处理方法,下面是比较常用的的一些方法: 字符串操作  代码如下 复制代码 var str = '   www.111cn.net   '; console.log(str);//   www.111cn.net console.log($.trim(str));//www.111cn.net,去除空格 $.each 循环查看数组.对象的数据信息 var arr = ['IT博客', 'php博客', 'javacsript博客',

真正的JQuery.ajax传递中文参数的解决方法_jquery

本人最近也遇到了需要传递中文参数的问题.在网上搜索一下,复制粘贴发的到处都是的"终极""解决方案"无非就是escape(str)来转码,然后在服务端还要写个方法再编辑一次,或用System.Text.Encoding下的方法来换来换去. 我很久以前一直在使用Prototype框架.在.net-GB2312或jsp-utf8下都使用过,从来没遇到有字符编码的问题.于是将Prototype和JQuery代码都下载下来打开研究原因.具体结果如下 不同之处在于JQuery默

JQuery.ajax传递中文参数的解决方法 推荐_jquery

本人最近也遇到了需要传递中文参数的问题.在网上搜索一下,复制粘贴发的到处都是的"终极""解决方案"无非就是escape(str)来转码,然后在服务端还要写个方法再编辑一次,或用System.Text.Encoding下的方法来换来换去. 我很久以前一直在使用Prototype框架.在.net-GB2312或jsp-utf8下都使用过,从来没遇到有字符编码的问题.于是将Prototype和JQuery代码都下载下来打开研究原因. 不同之处在于JQuery默认的cont

jquery ajax传递中文参数乱码问题及解决方法说明_jquery

jQuery传递中文参数乱码,原因是默认的传递方式没有采用UTF-8,所有我们可以在传递参数的时候对参数进行编码,然后再操作,代码如下,红色的代码为传递的参数,已标注 复制代码 代码如下: smsubmitclick = function(){   $(document).ready(function(){       var name = $("#txt_name").val();       var type = $("#seltype option:selected&q

Jquery ajax传递复杂参数给WebService的实现代码_jquery

Entity: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; namespace Entity { [DataContract] public class User { [DataMember] public string Name { get; set; } [DataMemb

jQuery ajax方法传递中文时出现中文乱码的解决方法_jquery

本文实例讲述了jQuery ajax方法传递中文时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 使用jQuery的ajax方法,在传递中文时出现中文乱码,按照以前的方法,修改了jquery文件中的ajaxSetting也不好使 复制代码 代码如下: sajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded;charse