对于想了解ExtJs4发送同步请求的store的读者,本文将是一篇不可错过的文章,我们将详细介绍exchange同步,并且为您提供关于$.getJSON异步请求和同步请求、05.easyui发送同步请
对于想了解ExtJs4发送同步请求的store的读者,本文将是一篇不可错过的文章,我们将详细介绍exchange同步,并且为您提供关于$.getJSON异步请求和同步请求、05.easyui发送同步请求验证用户名重复、ajax 同步请求和异步请求的差异分析、Ajax之同步请求和异步请求的区别的有价值信息。
本文目录一览:- ExtJs4发送同步请求的store(exchange同步)
- $.getJSON异步请求和同步请求
- 05.easyui发送同步请求验证用户名重复
- ajax 同步请求和异步请求的差异分析
- Ajax之同步请求和异步请求的区别
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异步请求和同步请求
代码:
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发送同步请求验证用户名重复
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同步和异步的差异, 先看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 同步请求方式: