2012-01-04 66 views
0

我使用下面的JavaScript,当一个字段被更改检测:我可以使用jQuery来显示我的Ajax查询正在进行吗?

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("select[id^='Status_'], input[id^='Position_']").change(function (e) { 
      var type = $(this).attr('id').split('_')[0]; 
      updateField('Account', $(this), type); 
     }); 
    }); 
</script> 

这然后调用数据库中的以下内容UPDATA数据:

function updateField(entity, obj, type) { 
    var val = obj.val(); 
    var idArr = obj.attr("id"); 
    var idTmp = idArr.split("_"); 
    var id = idTmp[1]; 
    var pk = $('#Meta_PartitionKey').val(); 
    var rk = $("div[id='rk_" + id + "']").html(); 
    $.ajax({ 
     cache: false, 
     url: "/Administration/" + entity + "s/Update", 
     data: { 
      pk: pk, 
      rk: rk, 
      fld: type, 
      val: val 
     } 
    }); 
}; 

有没有办法,我可以提供一些方法向用户发出更新正在进行的视觉线索。就像改变光标然后改回它一样。

另外,如何向我的用户发送消息以显示更新是否失败?

+0

您可以使用beforeSend()来生成某种警报 – 2012-01-04 11:29:23

回答

1

使用此:

function updateField(entity, obj, type) { 
    var val = obj.val(); 
    var idArr = obj.attr("id"); 
    var idTmp = idArr.split("_"); 
    var id = idTmp[1]; 
    var pk = $('#Meta_PartitionKey').val(); 
    var rk = $("div[id='rk_" + id + "']").html(); 
    enableLoadingIcon(); 
    $.ajax({ 
     cache: false, 
     url: "/Administration/" + entity + "s/Update", 
     data: { 
      pk: pk, 
      rk: rk, 
      fld: type, 
      val: val 
     }, 
     success: function() 
     { 
      disableLoadingIcon(); 
     } 
    }); 
}; 

,然后实现这两个函数启用加载和禁用加载显示加载图标或任何东西。

例如实现CSS样式改变光标为整身:

body.ajaxloading { 
    cursor:wait; 
} 

在这里看到的例子:http://www.w3schools.com/cssref/pr_class_cursor.asp

,然后实现的功能是这样的:

function enableLoadingIcon() { 
    $(body).addClass('ajaxloading'); 
} 
function disableLoadingIcon() { 
    $(body).addClass('ajaxloading'); 
} 
+0

这看起来不错。你见过这些功能的例子吗?有什么方法可以改变光标类型吗? – 2012-01-04 11:49:10

+0

你可以在你的css中指定一个加载光标,例如为body.ajaxloading,然后实现这两个函数来设置/取消将该类设置为body标签......我将编辑答案 – bardiir 2012-01-04 11:51:27

1

如果你想使用一些jQuery库,那么这会有所帮助:blockUI

1

打电话之前您$.ajax()显示有加载动画或消息的元素,并在$.ajax()添加成功处理程序:

$.ajax({ 
    ... 
    success: function() { 
     alert('done'); 
    } 
}); 
1

您可以将blockUI与ajax的回调函数结合使用。

function updateField(entity, obj, type) { 
$.blockUI(); 
var val = obj.val(); 
var idArr = obj.attr("id"); 
var idTmp = idArr.split("_"); 
var id = idTmp[1]; 
var pk = $('#Meta_PartitionKey').val(); 
var rk = $("div[id='rk_" + id + "']").html(); 
$.ajax({ 
    cache: false, 
    url: "/Administration/" + entity + "s/Update", 
    data: { 
     pk: pk, 
     rk: rk, 
     fld: type, 
     val: val 
    }, 
    success: function(){ 
     $.unblockUI(); 
    } 
}); 
}; 
1
function updateField(entity, obj, type) { 
    var val = obj.val(); 
    var idArr = obj.attr("id"); 
    var idTmp = idArr.split("_"); 
    var id = idTmp[1]; 
    var pk = $('#Meta_PartitionKey').val(); 
    var rk = $("div[id='rk_" + id + "']").html(); 
    $.ajax({ 
     cache: false, 
     url: "/Administration/" + entity + "s/Update", 
     data: { 
      pk: pk, 
      rk: rk, 
      fld: type, 
      val: val 
     }, 
     beforeSend: function(){ 
      alert('Starting ajax'); 
     } 
     success: function(response){ 
     alert('finished'); 
     } 
    }); 
}; 

你也必须处理错误的情况,但是这已经足够让你开始

+0

用户将对屏幕。感谢您花时间提供帮助,但如果他们在更新的每一次开始和结束时都看到警报框弹出,他们会杀了我。 – 2012-01-04 11:48:11

+0

警报框只是一个例子,您可以将此代码更改为任何您想要的 – 2012-01-04 11:50:52

相关问题