GVKun编程网logo

ExtJs4发送同步请求的store(exchange同步)

11

对于想了解ExtJs4发送同步请求的store的读者,本文将是一篇不可错过的文章,我们将详细介绍exchange同步,并且为您提供关于$.getJSON异步请求和同步请求、05.easyui发送同步请

对于想了解ExtJs4发送同步请求的store的读者,本文将是一篇不可错过的文章,我们将详细介绍exchange同步,并且为您提供关于$.getJSON异步请求和同步请求、05.easyui发送同步请求验证用户名重复、ajax 同步请求和异步请求的差异分析、Ajax之同步请求和异步请求的区别的有价值信息。

本文目录一览:

ExtJs4发送同步请求的store(exchange同步)

ExtJs4发送同步请求的store(exchange同步)

ExtJs的store默认是异步的,但有时候我们必须要发送同步请求才能满足需求,比如在多线程中,要实现同步很简单,只需继承Ext.data.proxy.Ajax,重写的同步类如下:

Ext.define(''Ext.ux.data.proxy.Ajax'', {  
    extend: ''Ext.data.proxy.Ajax'',  
    async:true,  
    doRequest: function(operation, callback, scope) {  
        var writer  = this.getWriter(),  
            request = this.buildRequest(operation);    
        if (operation.allowWrite()) {  
            request = writer.write(request);  
        }  
        Ext.apply(request, {  
            async         : this.async,  
            binary        : this.binary,  
            headers       : this.headers,  
            timeout       : this.timeout,  
            scope         : this,  
            callback      : this.createRequestCallback(request, operation, callback, scope),  
            method        : this.getMethod(request),  
            disableCaching: false   
        });  
        Ext.Ajax.request(request);  
        return request;  
    }  
});  

使用的时候,只需修改代理即可,async:false表示同步,true为异步:

proxy: Ext.create("Ext.ux.data.proxy.Ajax",{  
                async:false,  
                url:" ",  
                reader: {  
                    type: ''json'',  
                    root: ''root''
                }  
        })

 

$.getJSON异步请求和同步请求

$.getJSON异步请求和同步请求

代码:

for(var j=0;j<24;j++){
(jQuery).getJSON('log_analyze.PHP',{r:Math.random(),logid:logid,op:2,j:j},function(data){
if(data.success_agent){
var width=j*10;
$("#up_time_loading").empty().append("<div style=\"width:"+width+"px;height:10px;border:1px solid #333;background-color:#333\"></div>");
              }
 })
}

循环结束,发现结果没有规律 ,由于异步只执行的原因;




在执行之前加$.ajaxSettings.async = false; (同步执行)

$.ajaxSettings.async = false;
for(var j=0;j<24;j++){
(jQuery).getJSON('log_analyze.PHP',function(data){
if(data.success_agent){
var width=j*10;
$("#up_time_loading").empty().append("<div style=\"width:"+width+"px;height:10px;border:1px solid #333;background-color:#333\"></div>");
              }
 })
}

在for循环之前加一个$.ajaxSettings.async = false; 表示同步执行,这样他就会安装顺序执行了。


同时执行多个$.getJSON() 数据混乱的问题的解决

在执行之前加$.ajaxSettings.async = false; (同步执行) 执行你的代码之后及时恢复为$.ajaxSettings.async = true; (异步执行)

05.easyui发送同步请求验证用户名重复

05.easyui发送同步请求验证用户名重复

js部分


/**
 *  验证用户名
 */
$.extend($.fn.validatebox.defaults.rules, {
    userName : {
        validator : function(value, param) {
            //console.log(value);这里就是用户实时输入的内容
            //获取当前修改项目的id,用于在controller判断,如果有id就是修改,没有就是新增
            var empid = $("#empid").val();
            var haha = "";
            $.ajax({
                type : ''post'',
                //false为发送同步请求
                async : false,
                //发送请求的url
                url : ''/employee/checkName'',
                //发送的数据
                data : {
                    "username" : value,
                    "id":empid
                },
                success : function(data) {
                    haha = data;
                    console.log(data);
                }
            });
            return haha.success;
        },
        message : ''用户名已经被占用''
    }
});

html

<tr>
    <td>用户名:</td>
         <td><input id="inputName"type="text" name="username" data-options="required:true,validType:''userName''"></input></td>
</tr>

java部分

/**
     *  验证用户名
     * @param username
     * @return
     */
    @RequestMapping("/checkName")
    @ResponseBody
    public AjaxResult checkName(String username,Long id){
        //根据用户输入的用户名取查找
        Employee  employee = employeeService.findByUsername(username);

        //如果id不为null,就证明是修改
        if (id != null) {
            //如果根据id查找的用户名和传入的用户名不一致,就进行
            if (employeeService.findById(id).getUsername().equals(username)){
                return new AjaxResult();
            }
        }

        //否则,id为null
        //如果查到的对象为null,说明该用户不存在,那么名字就可使用
        if (employee == null) {
            return new AjaxResult();//如果没有查到对象,用户名可以使用
        }else {
            return new AjaxResult(false,"用户名被占用");
        }
    }

ajax 同步请求和异步请求的差异分析

ajax 同步请求和异步请求的差异分析

ajax同步和异步的差异, 先看2段代码:
代码一:
代码如下:

Synchronize = function(url,param) {
function createXhrObject() {
var http;
var activeX = [ "MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP" ];
try {
http = new XMLHttpRequest;
} catch (e) {
for (var i = 0; i < activeX.length; ++i) {
try {
http = new ActiveXObject(activeX[i]);
break;
} catch (e) {}
}
} finally {
return http;
}
}
var conn = createXhrObject();
conn.open("POST",url,false);//ajax同步
conn.send(param);
var strReturn = conn.responseText;
alert("1");
if (strReturn != "") {
return Ext.decode(conn.responseText);
} else {
return null;
}
alert("2");
};

代码二:
Ajax 同步请求方式:
代码如下:
Synchronize = function(url,param) { function createXhrObject() { var http; var activeX = [ "MSXML2.XMLHTTP.3.0","Microsoft.XMLHTTP" ]; try { http = new XMLHttpRequest; } catch (e) { for (var i = 0; i < activeX.length; ++i) { try { http = new ActiveXObject(activeX[i]); break; } catch (e) {} } } finally { return http; } } var conn = createXhrObject(); conn.open("POST",true);//ajax异步 conn.send(param); var strReturn = conn.responseText; alert("1"); if (strReturn != "") { return Ext.decode(conn.responseText); } else { return null; } alert("2"); };
同步和异步的差异如下: conn.open('POST',Url,true); // ajax异步 conn.open('POST',false); // ajax同步 对于代码二,为异步的ajax请求,执行结果为:先执行alert(2)再执行alert(1),异步的意思就是说一旦conn.open请求一发出,前端不去等待它的响应便执行后面的代码,所以alert(2)先执行了,然后当响应response到达以后才执行alert(1); 对于代码一,为同步的ajax请求,执行结果为:先执行alert(1)再执行alert(2),同步的意思就是说一旦conn.open请求一发出,前端就去等待它的响应,响应完成以后,alert(1)先执行了,然后alert(2);

Ajax之同步请求和异步请求的区别

Ajax之同步请求和异步请求的区别

同步与异步的概念区别

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式,是一种单线程的请求方式。
用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的。信息错误又要重新填写。

异步是指:把事件添加到队列中,不断循环队列,哪个准备好了就执行哪个。
把发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
当用户填写完一条信息后,该信息会自动向服务器提交,然后服务器响应客户端,在此过程中,用户依然在填写表格的信息,即向服务器请求多次,节省了用户的时间,提高了用户的体验。

同步请求/响应与异步请求

在同步请求/响应通信模型中,总是浏览器(与 Web 服务器、应用服务器或 Web 应用程序相对)发起请求(通过 Web 用户)。接着,Web 服务器、应用服务器或 Web 应用程序响应进入的请求。在处理同步请求/响应对期间,用户不能继续使用浏览器。

在异步请求/响应通信模型中,浏览器(通过 Web 用户)到 Web 服务器、应用服务器或 Web 应用程序的通信(以及反过来)是解耦的。在异步请求/响应对的处理中,Web 用户在当前异步请求被处理时还可以继续使用浏览器。一旦异步请求处理完成,异步响应就被通信(从 Web 服务器、应用服务器或 Web 应用程序)回客户机页面。典型情况下,在这个过程中,调用对 Web 用户没有影响;他们不需要等候响应。

关于ExtJs4发送同步请求的storeexchange同步的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于$.getJSON异步请求和同步请求、05.easyui发送同步请求验证用户名重复、ajax 同步请求和异步请求的差异分析、Ajax之同步请求和异步请求的区别等相关内容,可以在本站寻找。

本文标签:

上一篇node.js express 创建后台项目(创建nodejs 基于express项目)

下一篇2021-04-09:rand指针是单链表节点结构中新增的指针,rand可能指向链表中的任意一个节点,也可能指向null。给定一