GVKun编程网logo

多AJAX调用解决顺序问题(多ajax调用解决顺序问题的方法)

13

在这里,我们将给大家分享关于多AJAX调用解决顺序问题的知识,让您更了解多ajax调用解决顺序问题的方法的本质,同时也会涉及到如何更有效地AJAX-封装AJAX调用的方法、AJAX请求Controll

在这里,我们将给大家分享关于多AJAX调用解决顺序问题的知识,让您更了解多ajax调用解决顺序问题的方法的本质,同时也会涉及到如何更有效地AJAX - 封装AJAX调用的方法、AJAX 请求 Controller 执行拦截器顺序问题、Ajax——ajax调用数据总结、ajax的配置详情、ajax的调用解释、ajax的中文乱码和ajax的表单提交(内有实例)的内容。

本文目录一览:

多AJAX调用解决顺序问题(多ajax调用解决顺序问题的方法)

多AJAX调用解决顺序问题(多ajax调用解决顺序问题的方法)

更多文章请进入:我的开源网

在程序中,其中一个ajax取数据到前台下拉列表中,另外一个是取数据与下拉列表进行配,然后选中对应的项,有时候可以选中,有时候不会,多刷新几次又选中了,这样是不稳定的,开始以为是没收有匹配好,改了代码还是不行,后面觉得是顺序问题,于是打印了后台调用的结果,在控制台上看到的顺序是不稳定的,于是将ajax的设置成同步请求,这样就解决了。

加上async:false,表示同步,默认是异步。

AJAX - 封装AJAX调用的方法

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 执行拦截器顺序问题

AJAX 请求 Controller 执行拦截器顺序问题

@JFinal 你好,想跟你请教个问题:

使用 AJAX 请求 Controller 方法时,发现没有走拦截器,而是执行之后才走拦截器,这是怎么回事?我使用的拦截器把用户信息 setAttr 的,可是使用 AJAX 时,使用 getAttr 不到信息,非 AJAX 时可以

Ajax——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的调用解释、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 : &#39;post&#39;,// 请求方式
data: {"name":"123"},//data: $(&#39;#formid&#39;).serialize(),//序列化表单-当触发一个form表单提交的ajax事件的时候,这个序列化方法自动将数据转化为json格式传递给后台
dataType : &#39;json&#39;,// 服务器返回的数据类型
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 : &#39;post&#39;,// 请求方式
data: $(&#39;#formid&#39;).serialize(),//序列化表单
dataType : &#39;json&#39;,// 服务器返回的数据类型
//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的表单提交(内有实例)的相关知识,请在本站进行查询。

本文标签: