关于ajax的问题,跟大家分享一下
最近遇到了一个问题,困扰了我好几天,是这样的,我点击grid上的一个单元格时,会弹出上传下载的公共页面,实现方式:
function OnMouseUp(tableName, itemName) {
var column = igtbl_getColumnById(itemName);
if (column != null) {
var cell = igtbl_getCellById(itemName);
if (cell != null) {
if (cell.Column.Key == "ATTACHMENT") {
var OID = '<%=OID %>';
var linkId = cell.Row.getCellFromKey("LinkId").getValue();
var result;
$.ajax({
url: "AjaxCheckVendorInfoStatus.ashx?OID=" + OID,
cache: false,
async: false,
success: function(data) {
result = data;
if (result == "0") {
window.showModalDialog('../Common/FileUploadEx.aspx?LinkID=' + encodeURI(linkId)
+ '&FileType=PO&FileStatus=Upload&AllowDelete=Y');
document.getElementById('<%=cmdRefresh.ClientID %>').click();
return true;
}
else {
window.showModalDialog('../Common/FileUploadEx.aspx?LinkID=' + encodeURI(linkId)
+ '&FileType=PO&FileStatus=View&AllowDelete=N');
}
}
});
}
else if (cell.Column.Key == "EXPIRYDATE") {
document.getElementById("<%=txtChangedDate.ClientID %>").value = cell.getValue();
document.getElementById("<%=txtChangedDate.ClientID %>").click();
if (document.getElementById("<%=txtChangedDate.ClientID %>").value == "null") {
cell.setValue(" ");
}
else {
cell.setValue(document.getElementById("<%=txtChangedDate.ClientID %>").value);
}
}
}
}
return false;
}
因为我要动态的去后台判断当前的状态,所以用了ajax去取状态,然后会调用cmdRefresh(document.getElementById('<%=cmdRefresh.ClientID %>').click();)的click方法去重新绑定grid
绑定方法
protected void cmdRefresh_ServerClick(object sender, EventArgs e)
{
BindGrid4File();
}
现在问题出现了,我在对上传文件的共公页面操作完成以后,老是不能正确的刷新页面,debug到代码里面,看到值也是能取到的,但是就不刷新页面,纠结中……,但是页面上还有一个按钮,操作完成以后也会刷新页面,所以就比较两个按钮的区别,发现问题是一个用ajax一个不用ajax,然后把问题锁定在ajax上,网上查询资料发现
定义和用法
ajax() 方法通过 HTTP 请求加载远程数据。
该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。
最简单的情况下,$.ajax() 可以不带任何参数直接使用。
注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置。
参数
options
类型:Object
可选。AJAX 请求设置。所有选项都是可选的。
async
类型:Boolean
默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。
注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
cache
类型:Boolean
默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。
jQuery 1.2 新功能。
看到这里以后发现可能是async的参数值设错了,然后改为true,问题解决。