比较Ajax的三种实现及JSON解析
本文给大家介绍ajax的三种实现及json解析的相关资料,对本文感兴趣的朋友参考下
本文主要是比较三种实现Ajax的方式,为以后的学习开个头。
准备:
1、 prototype.js
2、 jquery1.3.2.min.js
3、 json2.js
后台处理程序(Servlet),访问路径servlet/testAjax:
Java代码
package ajax.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Ajax例子后台处理程序 * @author bing * @version 2011-07-07 * */ public class TestAjaxServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); String name = request.getParameter("name"); String age = request.getParameter("age"); System.out.println("{\"name\":\"" + name + "\",\"age\":\"" + age + "\"}"); out.print("{\"name\":\"" + name + "\",\"age\":" + age + "}"); out.flush(); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
TestAjaxServlet接收两个参数:name和age,并返回一个以JSON格式编写的字符串。
前台页面参数输入界面:
Html代码
<p id="show">显示区域</p> <p id="parameters"> name:<input id="name" name="name" type="text" /><br /> age:<input id="age" name="age" type="text" /><br /> </p>
一、prototype实现
Html代码
<script type="text/javascript" src="prototype.js"></script> <script type="text/javascript"> function prototypeAjax() { var url = "servlet/testAjax";//请求URL var params = Form.serialize("parameters");//提交的表单 var myAjax = new Ajax.Request( url,{ method:"post",// 请求方式 parameters:params, // 参数 onComplete:pressResponse, // 响应函数 asynchronous:true }); $("show").innerHTML = "正在处理中..."; } function pressResponse(request) { var obj = request.responseText; // 以文本方式接收 $("show").innerHTML = obj; var objJson = request.responseText.evalJSON(); // 将接收的文本用解析成Json格式 $("show").innerHTML += "name=" + objJson['name'] + " age=" + objJson['age']; } </script> <input id="submit" type="button" value="提交" onclick="prototypeAjax()" /><br />
在prototype的Ajax实现中,用evalJSON方法将字符串转换成JSON对象。
二、jquery实现
Html代码
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript" src="json2.js"></script> <input id="submit" type="button" value="提交" /><br /> <script type="text/javascript"> function jqueryAjax() { var user={"name":"","age":""}; user.name= $("#name").val(); user.age=$("#age").val(); var time = new Date(); $.ajax({ url: "servlet/testAjax?time="+time, data: "name="+user.name+"&age="+user.age, datatype: "json",//请求页面返回的数据类型 type: "GET", contentType: "application/json",//注意请求页面的contentType 要于此处保持一致 success:function(data) {//这里的data是由请求页面返回的数据 var dataJson = JSON.parse(data); // 使用json2.js中的parse方法将data转换成json格式 $("#show").html("data=" + data + " name="+dataJson.name+" age=" + dataJson.age); }, error: function(XMLHttpRequest, textStatus, errorThrown) { $("#show").html("error"); } }); } $("#submit").bind("click",jqueryAjax); // 绑定提交按钮 </script>
刚接触jQuery,在json的处理上借助了json2.js。还请前辈们指教。。
三、XMLHttpRequest实现
Html代码
<script type="text/javascript"> var xmlhttp; function XMLHttpRequestAjax() { // 获取数据 var name = document.getElementById("name").value; var age = document.getElementById("age").value; // 获取XMLHttpRequest对象 if(window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); }else if(window.ActiveXObject){ var activxName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"]; for(var i = 0 ; i < activexName.length; i++){ try{ xmlhttp = new ActiveXObject(activexName[i]); break; }catch(e){} } } xmlhttp.onreadystatechange = callback; //回调函数 var time = new Date();// 在url后加上时间,使得每次请求不一样 var url = "servlet/testAjax?name="+name+"&age="+age+"&time="+time; xmlhttp.open("GET",url,true); // 以get方式发送请求 xmlhttp.send(null); // 参数已在url中,所以此处不需要参送 } function callback(){ if(xmlhttp.readyState == 4){ if(xmlhttp.status == 200){ // 响应成功 var responseText = xmlhttp.responseText; // 以文本方式接收响应信息 var userp = document.getElementById("show"); var responseTextJson = JSON.parse(responseText); // 使用json2.js中的parse方法将data转换成json格式 userp.innerHTML=responseText + " name=" + responseTextJson.name + " age=" + responseTextJson.age; } } } </script> <input id="submit" type="button" value="提交" onclick="XMLHttpRequestAjax()" /><br />
ps:字符串转换成JSON的三种方式
采用Ajax的项目开发过程中,经常需要将JSON格式的字符串返回到前端,前端解析成JS对象(JSON )。
ECMA-262(E3) 中没有将JSON概念写到标准中,但在 ECMA-262(E5) 中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。
1,eval方式解析,恐怕这是最早的解析方式了。
function strToJson(str){ var json = eval('(' + str + ')'); return json; }
记得str两旁的小括号哦。
2,new Function形式,比较怪异哦。
function strToJson(str){ var json = (new Function("return " + str))(); return json; }
IE6/7中当字符串中含有换行(\n)时,new Function不能解析,但eval却可以。
3,使用全局的JSON对象。
function strToJson(str){ return JSON.parse(str); }
目前IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法。
使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下
var str = '{name:"jack"}'; var obj = JSON.parse(str); // --> parse error
name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
通过Ajax手动解决WordPress WP-PostViews不计数的问题
Ajax获取到数据放入echarts里不显示的原因分析及解决办法
以上是比较Ajax的三种实现及JSON解析的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP数组转JSON的性能优化方法包括:使用JSON扩展和json_encode()函数;添加JSON_UNESCAPED_UNICODE选项以避免字符转义;使用缓冲区提高循环编码性能;缓存JSON编码结果;考虑使用第三方JSON编码库。

Jackson库中的注解可控制JSON序列化和反序列化:序列化:@JsonIgnore:忽略属性@JsonProperty:指定名称@JsonGetter:使用获取方法@JsonSetter:使用设置方法反序列化:@JsonIgnoreProperties:忽略属性@JsonProperty:指定名称@JsonCreator:使用构造函数@JsonDeserialize:自定义逻辑

使用Ajax从PHP方法中获取变量是Web开发中常见的场景,通过Ajax可以实现页面无需刷新即可动态获取数据。在本文中,将介绍如何使用Ajax从PHP方法中获取变量,并提供具体的代码示例。首先,我们需要编写一个PHP文件来处理Ajax请求,并返回所需的变量。下面是一个简单的PHP文件getData.php的示例代码:

深入了解PHP:JSONUnicode转中文的实现方法在开发中,我们经常会遇到需要处理JSON数据的情况,而JSON中的Unicode编码在一些场景下会给我们带来一些问题,特别是当需要将Unicode编码转换为中文字符时。在PHP中,有一些方法可以帮助我们实现这个转换过程,下面将介绍一种常用的方法,并提供具体的代码示例。首先,让我们先了解一下JSON中Un

Ajax(异步JavaScript和XML)允许在不重新加载页面情况下添加动态内容。使用PHP和Ajax,您可以动态加载产品列表:HTML创建一个带有容器元素的页面,Ajax请求加载数据后将数据添加到该元素中。JavaScript使用Ajax通过XMLHttpRequest向服务器发送请求,从服务器获取JSON格式的产品数据。PHP使用MySQL从数据库查询产品数据,并将其编码为JSON格式。JavaScript解析JSON数据,并将其显示在页面容器中。点击按钮触发Ajax请求,加载产品列表。

PHP数组可通过json_encode()函数转换为JSON字符串(例如:$json=json_encode($array);),反之亦可用json_decode()函数从JSON转换为数组($array=json_decode($json);)。其他技巧还包括:避免深度转换、指定自定义选项以及使用第三方库。

为了提升Ajax安全性,有几种方法:CSRF保护:生成令牌并将其发送到客户端,在请求中添加到服务器端进行验证。XSS保护:使用htmlspecialchars()过滤输入,防止恶意脚本注入。Content-Security-Policy头:限制恶意资源加载,指定允许加载脚本和样式表的来源。验证服务器端输入:验证从Ajax请求接收的输入,防止攻击者利用输入漏洞。使用安全Ajax库:利用jQuery等库提供的自动CSRF保护模块。

使用PHP和Ajax构建自动完成建议引擎:服务器端脚本:处理Ajax请求并返回建议(autocomplete.php)。客户端脚本:发送Ajax请求并显示建议(autocomplete.js)。实战案例:在HTML页面中包含脚本并指定search-input元素标识符。
