`

ajax传递参数含有特殊字符解决方案

 
阅读更多
引用

       JQuery AJAX中遇到这样一个问题,参数中包含特殊字符,比如&'#@等
       这是执行AJAX的时候就会出问题,因为所传的参数变了.
       看个示例就明白:



方案一:
              $.ajax({
                    url: '/ashx/ajax.ashx',
                    type: 'post',
                    data: 'option=delete&name=11&adb,
                    success: function (data) {
                        if (data != 'error') {
                          
                            }
                        }
               });
       上面执行的ajax就是异步删除一个name为 11&abd 的数据
       当请求到ajax.ashx页面时,我们获取到的name参数为11
       执行操作后会发现其实删除了name 为 11的数据,而没有删除 name 为 11&abc 的数据
       这是由于有&特殊字符,把以前的俩个参数变成了三个参数 option,name,abc
       这时就需要用另外一种方法传递参数:
              $.ajax({
                    url: '/ashx/ajax.ashx',
                    type: 'post',
                    data:{ 'option':'delete','name':'11&adb'},
                    success: function (data) {
                        if (data != 'error') {
                          
                            }
                        }
               });
       采用上面的json格式传递参数就可以避免特殊字符引起的参数错误问题.



方案二:
       统一编码UTF-8.
       1.JSP页面:<%@ page language="java" pageEncoding="UTF-8"%>
       2.Ajax.js页面:传递参数时,可能出现特殊字符的参数用                                           
         escape(encodeURIComponent())两函数进行转码,传递到后台!
         var url = "/ZX/servlet/AddMemoServlet?memo=" + memoCode + "&otherMemo=" + escape (encodeURIComponent(otherMemo)) + "&applNo=" + applNo.innerText.substr(0,16);  
        //alert("url="+url);
        xmlHttp.open("POST", url, true);
        xmlHttp.onreadystatechange = doMemo;
        xmlHttp.send(null);
       3.服务器端接收传递的数据 比如:一个servlet的doGet方法中:
         request.setCharacterEncoding("gb2312");
         response.setContentType("text/xml;charset=utf-8");
         response.setHeader("Cache-Control", "no-cache");
  ...... 
       //以下解决Ajax中url传递的参数值中包含特殊字符,后端解析出错的问题:以utf-8以方式解码
         java.net.URLDecoder urlDecoder=new java.net.URLDecoder();
         String otherMemo = urlDecoder.decode(request.getParameter("otherMemo"),"utf-8");
         logger.info("otherMemo:" + otherMemo);



分享到:
评论

相关推荐

    jQuery 实现ajax传入参数含有特殊字符的方法总结

    在使用jQuery进行Ajax通信时,我们经常会遇到需要传递参数给服务器端的情况。然而,当这些参数中包含一些...这样,我们才能有效地解决含有特殊字符参数传递时可能出现的问题,并保证应用程序的健壮性和用户的良好体验。

    ajax传送参数含有特殊字符的快速解决方法

    JQuery AJAX中遇到这样一个问题,参数中包含特殊字符,比如&’#@等, 这时执行AJAX的时候就会出问题,因为所传的参数变了.看个示例就明白: 方案一: $.ajax({ url: '/ashx/ajax.ashx', type: 'post', data: 'option...

    ajax传递中文参数乱码解决办法

    ### AJAX传递中文参数乱码解决办法 在Web开发过程中,数据传输是不可或缺的一部分,而AJAX作为一种无需重新加载整个页面的情况下就能与服务器交换数据的技术,被广泛应用于动态数据交互场景中。然而,在处理中文等...

    Ajax传递特殊字符的数据如何解决

    如下,对含有特殊字符的text进行JSON封装,通过Ajax传递, var data = {“Id”: id, “text”: text}; 在后台无法进行数据接收。 解决方案 将 req.setRequestHeader("Content-Type", "application/x-...

    Ajax中文乱码问题解决方案

    本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**:服务器与客户端(浏览器)之间使用的字符编码格式不同,例如服务器使用GBK编码,而浏览器使用UTF-8编码...

    ajax乱码解决方案

    **Ajax 乱码解决方案** Ajax 乱码问题在开发Web应用程序时经常遇到,尤其是在涉及到不同编码格式时。本文将深入探讨Ajax与字符编码相关的技术细节,并提供几种有效的解决策略。 首先,JavaScript处理字符的方式是...

    js对话框传递参数

    通过以上介绍,我们可以看到使用`window.showModalDialog()`来实现对话框间的参数传递是一个简单而有效的解决方案。然而,由于其已经废弃的事实,在新项目中应该寻找更现代化的方法来替代这一技术。希望本文能够帮助...

    使用ajax可以传中文参数

    ### 使用Ajax传递中文参数的方法及Tomcat配置详解 在Web开发过程中,经常需要通过Ajax进行异步请求来实现页面的部分更新或数据交互功能。当涉及到中文等非ASCII字符时,可能会遇到一个常见的问题:中文参数在服务器...

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

    本文深入分析了造成这一问题的根本原因,并提供了一种简单有效的解决方案。 首先,我们来回顾一下ajax中文乱码问题的背景。在使用JQuery ajax方法向服务器发送数据时,如果页面编码不是UTF-8,就会导致中文字符在...

    基于javascript如何传递特殊字符

    解决方案通常涉及以下步骤: 1. 使用form表单提交。这是处理特殊字符的最简单方法,因为表单数据会自动进行适当编码。 2. 手动替换特殊字符为对应的十六进制代码。例如: ```javascript str = str.replace(/\+/g, ...

    JS中append字符串包含onclick无效传递参数失败的解决方案

    在上述例子中,由于AJAX返回的参数中可能包含整数和带有单引号的字符串,这会导致解析错误,因为单引号会被视为字符串的结束,从而破坏了参数的完整性和格式。 解决策略: 为了解决这个问题,我们需要确保在字符串...

    jquery ajax 向后台传递数组参数示例

    针对这一问题,一种可行的解决方案是将数组中的对象转换为JSON字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它可以很好地表示复杂的数据...

    ajax到servlet乱码解决

    AJAX 到 Servlet 乱码解决方案 在 Web 开发中,使用 AJAX 通过 URL 传参数给 Servlet 时,经常会遇到乱码问题,即使使用了统一的字符编码也没用。下面我们来探讨这个问题的解决方案。 问题描述 当我们使用 AJAX ...

    Ajax传递中文参数到后台乱码的有效解决方法

    然而,当使用Ajax传递包含中文字符的参数时,由于编码和解码的不统一,经常会出现乱码问题。为解决这一问题,本文将详细介绍一种有效的方法来确保中文参数能够正确无误地传递到后端。 首先,要了解的是,乱码问题的...

    AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题

    另一种解决方案是在服务器端手动转换字符集,这种方法适用于某些特殊场景或需求。具体实现如下: 1. **客户端编码**: ```javascript // 使用POST方式发送请求 xmlhttp.open("POST", "AjaxServlet", true); // ...

    ajax_json_post_ashx获取参数值

    在实际开发中,可能会遇到`context.Request.Form`和`context.Request.Params`无法正确获取POST数据的问题,我们将探讨这个问题的原因以及解决方案。 首先,了解AJAX的基本概念。AJAX允许网页在不重新加载整个页面的...

    _探讨Ajax获取表单值向Servlet传递的设计方案.doc

    在 doGet 函数中,我们首先判断 URL 中是否已经包含参数,如果没有,我们将数据附加到 URL 中,否则,我们将数据作为查询字符串附加到 URL 中。然后,我们使用 initXmlHttp 函数初始化 XMLHttpRequest 对象,并将回...

    escape --AJAX和JS传中文乱码的最终解决方案

    总结来说,解决AJAX和JS传中文乱码问题的关键在于理解各种编码方式,以及在客户端和服务器之间正确地转换和传递数据。通过合理运用JavaScript的"escape"、"encodeURIComponent"等函数,并确保统一的编码标准,我们...

    ajax+jsp+servlet 中文解决方法

    在Web开发中,Ajax、JSP和Servlet是三个非常重要的技术。...这个示例代码`ajax_study`提供了具体实现的参考,可以帮助开发者理解并实践这些解决方案。学习并理解这些知识点对于进行多语言支持的Web开发至关重要。

Global site tag (gtag.js) - Google Analytics