在这里,我们将给大家分享关于多AJAX调用解决顺序问题的知识,让您更了解多ajax调用解决顺序问题的方法的本质,同时也会涉及到如何更有效地AJAX-封装AJAX调用的方法、AJAX请求Controll
在这里,我们将给大家分享关于多AJAX调用解决顺序问题的知识,让您更了解多ajax调用解决顺序问题的方法的本质,同时也会涉及到如何更有效地AJAX - 封装AJAX调用的方法、AJAX 请求 Controller 执行拦截器顺序问题、Ajax——ajax调用数据总结、ajax的配置详情、ajax的调用解释、ajax的中文乱码和ajax的表单提交(内有实例)的内容。
本文目录一览:- 多AJAX调用解决顺序问题(多ajax调用解决顺序问题的方法)
- AJAX - 封装AJAX调用的方法
- AJAX 请求 Controller 执行拦截器顺序问题
- Ajax——ajax调用数据总结
- ajax的配置详情、ajax的调用解释、ajax的中文乱码和ajax的表单提交(内有实例)
多AJAX调用解决顺序问题(多ajax调用解决顺序问题的方法)
更多文章请进入:我的开源网
在程序中,其中一个ajax取数据到前台下拉列表中,另外一个是取数据与下拉列表进行配,然后选中对应的项,有时候可以选中,有时候不会,多刷新几次又选中了,这样是不稳定的,开始以为是没收有匹配好,改了代码还是不行,后面觉得是顺序问题,于是打印了后台调用的结果,在控制台上看到的顺序是不稳定的,于是将ajax的设置成同步请求,这样就解决了。
加上async:false,表示同步,默认是异步。AJAX - 封装AJAX调用的方法
AJAX封装方法
url:表示要提交的服务器网页地址。
onsucess:表示服务器返回数据后调用的回调方法。
function ajax(url,onsuccess) { var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //创建XMLHTTP对象,考虑兼容性。XHR xmlhttp.open("POST",url,true); //“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓存问题)。这里还没有发出请求 //AJAX是异步的,并不是等到服务器端返回才继续执行 xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) //readyState == 4 表示服务器返回完成数据了。之前可能会经历2(请求已发送,正在处理中)、3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成) { if (xmlhttp.status == 200) //如果Http状态码为200则是成功 { onsuccess(xmlhttp.responseText); } else { alert("AJAX服务器返回错误!"); } } } //不要以为if (xmlhttp.readyState == 4) {在send之前执行!!!! xmlhttp.send(); //这时才开始发送请求。并不等于服务器端返回。请求发出去了,我不等!去监听onreadystatechange吧! }
我们不推荐使用open方法的 async=false,但是对于一些小型的请求,也是可以的。
参考:传智播客培训资料
AJAX 请求 Controller 执行拦截器顺序问题
@JFinal 你好,想跟你请教个问题:
使用 AJAX 请求 Controller 方法时,发现没有走拦截器,而是执行之后才走拦截器,这是怎么回事?我使用的拦截器把用户信息 setAttr 的,可是使用 AJAX 时,使用 getAttr 不到信息,非 AJAX 时可以
Ajax——ajax调用数据总结
在做人事系统添加批量修改的功能中,需要将前台中的数据传给后台,后台并执行一系列的操作。通过查询和学习了解到可以通过ajax将值传入到后台,并在后台对数据进行操作。
说的简单点,就是ajax调用后台的方法。通过学习和实践,学习了几种ajax调用数据的几种形式,现在总结一下:
1. Ajax调用无参的后台方法的数据
Jquery前台代码:
//ajax调用无参数后台方法 $(function () { $("#btnok").click(function () { $.ajax({ type:"post",//ajax的方式为post(get方式对传送数据长度有限制) url: "demo.aspx/Hello",//demo.aspx为目标文件,Hello为目标文件中的方法 contentType: "application/json",//传值方式 success: function (data) { //成功回传值后触发的方法 alert(data.d); //后台返回的参数 } }) }) });
前台表单控件:
<input id="btnok" type="button" value="单击返回hello" />
后台代码:
//ajax调用的无参数方法 [WebMethod] public static string Hello() { return "Hello Ajax!"; }
运行结果:
2. Ajax调用有参后台方法中的数据
Jquery前台代码:
//ajax调用有参数后台方法 $(function () { $("#btnName").click(function () { var strname = $("#txtName").val(); //strname获得文本框中输入的值 $.ajax({ type: "post",//ajax的方式为post(get方式对传送数据长度有限制) contentType: "application/json",//传值方式 url: "demo.aspx/getName",//demo.aspx为目标文件,getName为目标文件中的方法 data: "{strName:'" + strname + "'}",//strName为后台方法的参数,strname为文本框中输入的值 contentType: "application/json",//传值方式 success: function (result) { //成功回传值后触发的方法 alert(result.d); //后台返回的参数 } }) }) });
前台表单控件:
<input id="txtName" type="text" /><input id="btnName" type="button" value="确定" />
后台代码:
//ajax调用的带参数的方法 [WebMethod] public static string getName(string strName) { return "欢迎"+strName; }
运行结果:
3. Ajax调用后台方法返回数组的数据
Jquery前台代码:
//ajax调用后台方法返回数组 $(function () { $("#btnReArr").click(function () { $.ajax({ type: "post",//传值方式 url: "demo.aspx/GetArray",//demo.aspx为目标文件,GetArray为目标文件中的方法 contentType: "application/json",//传值方式 success: function (result) { //成功回传值后触发的方法 alert(result.d); //后台返回的参数 } }) }) });
前台表单控件:
<input id="btnReArr" type="button" value="单击返回数组" />
后台代码:
//ajax调用返回数组的方法 [WebMethod] public static List<string> GetArray() { List<string> li = new List<string>(); for (int i = 0; i < 10; i++) li.Add(i + ""); return li; }
运行结果:
4. Ajax调用xml中的数据
Jquery前台代码:
//ajax调用xml中的数据 $(function () { $("#btnMaXML").click(function () { $.ajax({ dataType: 'xml',//ajax的方式为post(get方式对传送数据长度有限制) url: "demoXML.xml",//直接写xml的名字 success: function (xml) { //成功回传值后触发的方法 //查找xml元素 $(xml).find("data>item").each(function () { var $dm = $(this); var $id = $dm.find("id"); //获取出id字段的值 var $class = $dm.find("class");//获取出class字段的值 alert($id.text()+","+$class.text()); }) } }) }) });
前台表单控件:
<input id="btnMaXML" type="button" value="单击返回xml中数据" />
xml代码:
<?xml version="1.0" encoding="utf-8" ?> <data> <item> <id>1</id> <class>语文</class> </item> <item> <id>2</id> <class>数学</class> </item> </data>
运行结果:
对于利用ajax调用后台的方法,也有一定的局限性,因为他的后台方法是静态的,所以在方法中利用表单中的控件就有一定的困难。但是这种从前台传值到后台的方法比较简单也更易于理解。
(免费送上自己写的源码地址:http://download.csdn.net/detail/suneqing/7265593)
ajax的配置详情、ajax的调用解释、ajax的中文乱码和ajax的表单提交(内有实例)
本篇文章主要的讲述了关于ajax的使用总结说明,还有ajax的配置、调用、中文乱码、表单提交等等详细解释,现在我们一起来看这篇文章吧
·jquery的使用
0、必须优先引入jquery.js 否则无法调用jquery框架
1、js区分大小写,起名字的时候要注意
2、jquery根据p的id属性获取页面text的值:$("#demoid").val(),根据class属性获取页面text的值$(".democlass").val(),如果是赋值$("#demoid").val("赋值的参数")
3、$(document).ready(function(){代码})、$().ready(function(){代码})、$(function(){代码})的含义一样
4、多个$(function(){代码})可以并存,即只要名字不重复可以同时发挥作用
5、$(function(){代码})的意思是页面加载完毕即运行,比如自动点击,自动弹框,再或者点击监听或者其他监听
6、加载完即点击和“点击的监听”的区别(非常有借鉴意义)
比如现在有一个js方法,function demofunction(){alert("这个方法运行了");};
加载完即点击:$("#demoid").click(demofunction());
加载完后即监听,这个方法只能是在按钮有click这个动作,或者通过jquery有click()动作:$("#demoid").click(function(){demofunction()});
7、如果是自动加载即运行的,或者需要被监听的都需要放置到$(document).ready(function(){代码})的代码中
8、window.onload=function(){代码}与$(function(){代码})的区别
·调用函数的用法不同:
window.onload = function(){代码};
$(function(){代码})
·调用函数的时间不同
window.load=function(){代码}:必须等待网页中所有的内容加载完毕(包括图片)才能执行,比如要运用上传等功能。
$(function(){代码}),等到网页中所有的dom结构绘制完毕后就可以执行。
9、ajax专题
·需要的jar包:commons-lang-2.5.jar、commons-lang3-3.1.jar、javassist-3.11.0.ga.jar
·前台js的写法:为了简化流程,写成页面加载即运行
$(document).ready(function(){
$.ajax({
url : "testajax.do",// 请求地址 //timeout : 600000,//超时时间设置,单位毫秒 async : false,// 异步 cache : false,// 缓存 type : 'post',// 请求方式 data: {"name":"123"},//data: $('#formid').serialize(),//序列化表单-当触发一个form表单提交的ajax事件的时候,这个序列化方法自动将数据转化为json格式传递给后台 dataType : 'json',// 服务器返回的数据类型 success : function(msg) {// 请求成功后调用的 alert("返回json的实验成功了"+" msg.resultcode="+msg.resultcode+" msg.name="+msg.name); }, error :function(){ alert("异常"); } }); });
·struts.xml文件的写法
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!--略去一些struts2的配置信息--> <package name="myajax" extends="json-default" namespace="/"> <global-results> <result name="message" type="json"> <param name="root">message</param> </result> </global-results> <action name="*"method="{1}"> <result name="list">/index.jsp</result> </action> </package> <!-- 包含的其他配置文件 --> <include file="struts-method.xml"></include> </struts>
·后台java代码:仅距离调用ajax,故不涉及数据库操作
import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; public class AjaxTest { protected Map<String, Object> message = new HashMap<String, Object>(); /** AJAX请求返回RESULT的name常量*/ protected final static String MESSAGE = "message"; public Map<String, Object> getMessage() { return message; } public void setMessage(Map<String, Object> message) { this.message = message; } //-登录页面中form表单提交的路径 public String testajax() throws IOException{ System.out.println("获取参数name="+ServletActionContext.getRequest().getParameter("name")); message.put("resultcode", "0000"); message.put("resultcode", "0001"); message.put("name", "zhong文ce试"); return MESSAGE; } }
·ajax的应用之提交form表单数据-表单数据自动转json格式
场景描述:当具体的提交信息为一个form表单,并通过ajax传递给后台时,我们通常使用一个叫序列化的方法将这个form表单转化为json格式传递给后台。(想看更多就到PHP中文网AJAX开发手册栏目中学习)
·form表单的格式,form标签有id,input标签有name
<form id="formid"> 姓名:<input type="text" name="name" value="张三"/><br> 年龄:<input type="text" name="age" value="12"/><br> <input type="submit" value="提交" id="submitid"/> </form>
·js部分的代码-可以单独写在一个js文件,注意,需要先引入jquery.js文件
$(document).ready(function(){ $("#submitid").click(function(){ajaxhere()}); }); //提交表单的ajax function ajaxhere(){ $.ajax({ url : "testajax3.do",// 请求地址 //timeout : 600000,//超时时间设置,单位毫秒 async : false,// 异步 cache : false,// 缓存 type : 'post',// 请求方式 data: $('#formid').serialize(),//序列化表单 dataType : 'json',// 服务器返回的数据类型 //contentType:"application/x-www-form-urlencoded; charset=utf-8", success : function(msg) {// 请求成功后调用的 alert("form表单触发的实验成功了"+" msg.resultcode"+msg.resultcode+" msg.name="+msg.name); }, error :function(){ alert("异常"); } }); }; ·传统的ajax返回方式,即java部分的返回写在流里-特别要注意这里的处理中文乱码的解决方式 HttpServletResponse response = ServletActionContext.getResponse(); response.setCharacterEncoding("utf-8"); PrintWriter writer = response.getWriter(); String a = "{\"resultcode\":\"0000\",\"name\":\"文试\"}"; writer.write(a); writer.flush(); writer.close();
本篇文章到这就结束了(想看更多就到PHP中文网AJAX使用手册栏目中学习),有问题的可以在下方留言提问。
以上就是ajax的配置详情、ajax的调用解释、ajax的中文乱码和ajax的表单提交(内有实例)的详细内容,更多请关注php中文网其它相关文章!
今天的关于多AJAX调用解决顺序问题和多ajax调用解决顺序问题的方法的分享已经结束,谢谢您的关注,如果想了解更多关于AJAX - 封装AJAX调用的方法、AJAX 请求 Controller 执行拦截器顺序问题、Ajax——ajax调用数据总结、ajax的配置详情、ajax的调用解释、ajax的中文乱码和ajax的表单提交(内有实例)的相关知识,请在本站进行查询。
本文标签: