2009-04-22

ui.datepicker.js 會破壞 Visual Studio 2008 的 intellisense

在引入 jQuery ui 套件中的 ui.datepicker.js 之後, 出現了 "'jQuery.support.htmlSerialize' 是 null 或不是一個物件" 的錯誤, 造成 VS2008 的 intellisense 失效, 雖然並不是那麼依賴 intellisense, 但是看到錯誤訊息就是不舒服, 所以就花了點時間找了一下到底是什麼地方造成的錯誤, 當然先從最可疑的部分(非 funciton 定義的 code)開始找, 在最底部發現以下的 code:

$.datepicker = new Datepicker(); // singleton instance
$.datepicker.initialized = false;
$.datepicker.uuid = new Date().getTime();
$.datepicker.version = "1.7";

把它們註解掉之後, 錯誤就消失了, 找到錯誤來源之後就該想個辦法來解決了, 於是稍稍修改一下第一行那個 singleton instance 的 code 如下:

$.datepicker = ($.support) ? new Datepicker() : {};

問題就解決了!!

 

註: 此修改僅針對 jquery 1.3jquery-ui 1.7, 其他版本沒有試過!

 

keywords: jquery, datepicker, ui, vs2008, intellisense, htmlSerializer

2009-02-18

取消正在執行的 WebService (ASP.NET AJAX)

假設我們有一個 Web service 是 Demo.Service1.SayHello, 如果我們想要在發出要求之後能夠取消的話, 可以用以下的方式

1. 宣告一個 executor 變數來存放等會兒發出的 web service request

2. 新增一個 invokingRequest 的事件處理, 像這樣

var executor = null;
Sys.Net.WebRequestManager.add_invokingRequest(function(sender, args) {
    executor = args.get_webRequest().get_executor();
})

3. 最後再寫一個函式在你想要取消的時候呼叫, 以取消 web service request

function abortRequest() {
    if (executor.get_started() && !executor.get_aborted() && !executor.get_responseAvailable()) {
        executor.abort();
    }
}

這樣就 OK 了!

 

keywords: webservice, asp.net ajax, cancel, abort, executor, invokingRequest