2012-01-04 65 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

相關問題