关于$.ajax同步和异步的问题和提交后台的一些问题。

经常有人ajax函数外,定义一个全局变量,并且在返回函数取出一个值用作判断条件,但是这一条件常常失效。

var OnOff=0;
                var checkPhone =  function() {
                    var phoneVal ={ "tel":$(".checkPhone").val() };
                    
                    $.ajax({
                          type : "post",
                          url : 'base/doExistTel.do',
                          data:phoneVal,
                          dataType : "json",
                          async:false, 
                          success : function(data) {
                              var result = eval(data);
                              
                              if(result.Success=='true'){
                                  OnOff=1;
                              }
                               
                            }
                    });    
//如果ajax的async属性设为true,就是异步,在result.Success没有返回数据的情况下,执行
//以下的代码。如果async属性设为false的,则是同步,必在result.Success返回值的情况下再执行
//以下的代码。
if(OnOff==1){
      
}

 contentType  是客户端到服务器端
 dataType是 服务器端返回

在前端返回的数据是这种类型:{"xz1":["A","B"]}

后端spring mvc @ResponseBody是无法接收,可能是value没有双引号,具体还没有试过。

不过可以在ajax设置一个参数(params),提交于后台:

$.ajax({
	 type : "post",
	 url : 'base/doSubmitProblem.do',
	 data:{"params":person},
         dataType : 'json',
	 success : function(data) {。。。。。

  

后端代码

@RequestMapping("/doSubmitProblem")
@ResponseBody
public Map<String,Object> subProbem(@RequestParam("params") String ps){

}

原文地址:https://www.cnblogs.com/Anders888/p/6700555.html