`

JS实现AJAX请求_2

    博客分类:
  • JS
阅读更多

JS实现AJAX请求_2(进阶篇)

问题:当多次调用同一个AJAX请求时,可能会遇到服务器的数据发生改变了,但是在浏览器中获取的数据没有同步的问题。问题的原因在于浏览器的缓存。这种情况一般只发生在GET请求中。

 

避免GET缓存:

使用无意义的参数避免缓存:

//这里只针对非IE的浏览器了,IE也是如此,只有对象的创建不同罢了
var xmlHttp=new XMLHttpRequest();
var timer=new Date().getTime();//获取当前的时间,每次请求时的时间是不同的
xmlHttp.open("GET","ajax.do?temp="+timer,true);
xmlHttp.send();

 

在服务端添加响应头:

//在servlet中添加响应头
response.setContentType("text/html;charset=UTF-8");
response.addHeader("pragma","no-cache");
response.addHeader("cache-control","no-cache");
response.addHeader("expires","0");
//这三个响应头告诉浏览器不使用缓存

 

 问题:当我们使用GET请求传参中有中文时,会出现乱码的情况,POST请求转码比较简单。

 

AJAX对中文的支持:

GET请求:

//js传中文
var xmlHttp=new XMLHttpRequest();
var v=encodeURIComponent("这是汉字");//将中文包裹起来
xmlHttp.open("GET","ajax.do?param="+v);
xmlHttp.send();

 

//servlet中
String v=request.getParameter("param");//接收请求地址中的param的值
v=new String(v.getBytes("ISO-8859-1"),"UTF-8");//将原数据重新编码为UTF-8格式

 POST请求:

//js
var xmlHttp=new XMLHttpRequest();
xmlHttp.open("POST","ajax.do");
xmlHttp.send("v=这是汉字");//不用包裹起来

 

//servlet中
request.setCharacterEncoding("UTF-8");//这里设置请求的编码格式即可
String v=request.getParameter("v");//v=这是汉字

 

总结:

  • 避免GET缓存
  • 对中文的支持
  • 字符转码

结语:

对所有的请求习惯性在servlet中都设置编码格式

  request.setCharacterEncoding("UTF-8");

  response.setCharacterEncoding("UTF-8");

GET请求中有中文时,将中文包裹起来,英文也可以包裹,没有什么影响。

分享到:
评论

相关推荐

    CAjax.rar_Ajax 留言_ajax_ajax .net_ajax C#_net

    此外,还可以使用jQuery、knockout.js等JavaScript库来处理Ajax请求,它们提供了更简洁的API,减少了代码量。 总之,这个压缩包为学习和实践Ajax技术提供了一个具体的场景——无刷新留言功能,通过C#和.NET框架实现...

    Js拦截全局ajax请求

    在JavaScript开发中,有时我们需要对全局的Ajax请求进行拦截,以便进行统一的处理,比如添加统一的错误处理、数据格式化、性能监控等。这种需求通常可以通过“Ajax Hook”技术来实现。Ajax Hook允许我们捕获并修改...

    AjaxChat_XML_JSON_javascript_chat_ajax_Different_php_

    用户发送的消息会被编码为JSON对象,然后通过Ajax请求发送到PHP服务器,服务器处理这些消息后再将新消息以JSON形式返回给客户端,更新聊天界面。 **AjaxChat_XML**同理,区别在于它使用XML作为数据交换格式。XML...

    实例详解Android Webview拦截ajax请求

    在 Native 端,我们需要实现一个 JavaScript Interface,例如 onAjaxRequest 方法,该方法将接收 Fly.js 传来的请求对象,并完成真正的请求后,将响应对象通过 handler 返回给 Fly.js。 通过这种方式,我们就可以...

    ko.rar_ajax_ajax jsp_javascript_jsp

    在JSP中集成Ajax,我们通常会创建一个JavaScript函数来处理Ajax请求。这个函数可能包括以下步骤: 1. 创建XMLHttpRequest对象:这是Ajax通信的基础,不同的浏览器可能有不同的实现方式,但通常可以通过`new ...

    struts-ajax.zip_ajax struts _javascript_struts ajax_struts-aj_ti

    3. 如何在Struts的Action中处理Ajax请求,以及返回JSON或XML格式的数据。 4. 在JSP页面中使用JavaScript或jQuery进行Ajax调用,以及处理返回的结果。 5. 如何设计和组织MVC架构,使得Struts和Ajax能够有效地协同工作...

    ajax_init_javascript_ajax_

    在JavaScript中,创建一个基本的Ajax请求包括以下步骤: 1. **创建XMLHttpRequest对象**:这是Ajax的核心,它负责与服务器建立连接并发送/接收数据。 ```javascript var xhr = new XMLHttpRequest(); ``` 2. **...

    ajax_example.rar_ajax_ajax html_html ajax

    然而,需要注意的是,由于Ajax请求是异步的,开发者需要处理可能出现的并发问题,确保数据的一致性,并考虑到浏览器的兼容性问题。** **总结来说,"ajax_example.rar"中的示例展示了如何利用Ajax技术进行异步通信,...

    ajax-login.rar_ajax_ajax login_ajax 登陆_login_登陆验证

    2. **事件监听**:使用JavaScript(通常基于jQuery或其他库)添加事件监听器,当用户点击登录按钮时触发Ajax请求。 3. **构建Ajax请求**:使用XMLHttpRequest或现代浏览器提供的fetch API创建异步请求。设置请求的...

    JavaScript语言与Ajax应用第二版_JavaScript语言与Ajax应用_JavaScript应用_javascri

    8. **错误处理与调试**:学习如何有效地处理JavaScript和Ajax请求中的错误,以及使用浏览器的开发者工具进行调试,是提升开发效率和代码质量的重要环节。 9. **jQuery与Ajax**:jQuery是一个流行的JavaScript库,...

    javascript和ajax学习指南 Learn_JavaScript_and_Ajax_with_w3Schools.zip

    JavaScript 和 AJAX 是 web 开发中的两个重要概念,广泛应用于创建交互性强、动态更新的网页。这份"Learn_JavaScript_and_Ajax_with_w3Schools.zip"压缩包包含了一个电子书和一个文本文件,旨在帮助学习者掌握这两种...

    struts-ajax.rar_ajax struts _struts ajax_struts ajax war

    开发者可以从中学到如何配置Struts的Action、Interceptor以及如何编写JavaScript代码来发送Ajax请求,以及如何在后台处理这些请求并返回响应数据。此外,通过分析项目中的JSP页面,还可以了解如何在页面上动态渲染从...

    AjaxChat_Clean_javascript_chat_foughtjzi_ajax_zoodl3_源码.zip

    4. **服务器通信**:服务器端可能采用PHP、Node.js或其他后端语言处理这些Ajax请求,完成消息的存储和检索,并返回结果给客户端。 5. **数据解析**:接收到服务器响应后,解析返回的数据,通常是JSON格式,然后将新...

    AjaxXMLHttpRequest_Demo02.zip

    2. **JavaScript文件**:可能名为script.js或类似,这是处理Ajax请求的主要脚本。在这个文件中,开发者将创建XMLHttpRequest实例,设置请求参数(如URL、HTTP方法、请求头等),并监听其状态变化。当请求完成时,会...

    smarty+AJAX.rar_ajax_ajax php_php ajax_smarty_smarty ajax

    按钮点击事件中,使用JavaScript编写Ajax请求代码,如设置请求方法(GET或POST)、URL、数据(如果需要)以及回调函数。 2. **Ajax请求**:使用XMLHttpRequest对象,创建一个新的请求,设置请求的URL为Smarty模板...

    extjs ajax同步请求所需js

    标题中提到的"extjs ajax同步请求所需js"是指ExtJS框架中用于执行同步Ajax请求的相关JavaScript代码。在ExtJS中,Ajax请求通常通过`Ext.Ajax`对象来实现。与传统的异步请求不同,同步请求会阻塞浏览器,直到请求完成...

    Ajax+JSP.rar_ajax_ajax jsp download_java ajax jsp_jsp ajax_jsp在线

    2. `postajax.jsp` 是接收Ajax请求的JSP页面,处理请求后返回数据。 3. `www.pudn.com.txt` 可能是下载链接或参考文档,可能与Ajax+JSP的实现有关。 学习Ajax+JSP的结合,不仅可以提升Web应用的性能,还能深入理解...

    ajax实现无刷新对数据库的操作(表格版).zip_ajax 表格_ajax 无刷新_ajax 表格_ajax 表格 数据_表

    【Ajax 实现无刷新对数据库操作】是一种现代Web开发中的技术组合,主要用于创建更快速、更互动的用户体验。Ajax(Asynchronous JavaScript and XML)的核心在于,它允许网页在不重新加载整个页面的情况下与服务器...

    asp+ajax.rar_ajax_ajax a_ajax asp_asp aja_asp+ajax

    jQuery提供了易于使用的接口来处理AJAX请求,如`$.ajax()`、`$.get()`和`$.post()`函数。在这个项目中,JavaScript可能用于捕获用户交互,如点击按钮,然后触发AJAX请求。 3. **ASP服务器端处理**:在服务器端,ASP...

Global site tag (gtag.js) - Google Analytics