PageMethod的小技巧 讓自己的程式碼更乾淨

PageMethod的小技巧 讓自己的程式碼更乾淨

 

1.  用變數裝PageMethod的名字

用AJAX當主軸開發網頁

頁面難免不只有一隻PageMethod再跑

 

這個時候在每一次呼叫的時候都要再重新打一次 url: {PageName}.aspx/{MethodName}

 

我個人覺得要一直重複打PageName超煩的

 

而且萬一打錯還要浪費時間去改

 

所以我個人都習慣在global.js  (每一頁都會呼叫到的js)

var getPageName= function () {
        return location.pathname.substring(location.pathname.lastIndexOf('/') + 1) + '/';
};

var pageName = getPageName();

//$.ajax( url: pageName + '{MethodName}' ...

 

簡單來說就是抓現在的網址, 後面給他補上一個/這樣而已

這樣頁面之後要用到pathName的地方就不用每一頁重打一次頁面名稱

 

而且在Copy Paste的時候也很方便 - -b

===========================================================================================

2.  給定ajax預設值

有的時候看著每一次呼叫PageMethod的ajax, 都要重複打type: 'POST', contentType: 'application/json; charset=utf-8',

我個人是覺得超煩的啦

所以一樣在global.js加上

$(document).ready(function() {
	$.ajaxSetup({
		type: 'POST',
		contentType: 'application/json; charset=utf-8',
		data: '{}',
		dataType: 'json'
	});
});

 

這是jQuery提供的ajax預設值選項,  這樣就不用每次都重複指定一樣的東西

配合上面的取得pageName,  所以我們在頁面上呼叫PageMethod的時候可以用

$.ajax({
	url: pageName + 'Method', data: $.toJSON({ obj }), //data可以選填, 
	success: function (data) {
	}
});

 

變得清爽多了吧

===========================================================================================

3. 讓自己偵錯AJAX更容易

其實jQuery的ajax有提供一個屬性是error,

 

當ajax發生錯誤的時候會呼叫該error method, 裡面會丟入一些錯誤的訊息讓我們排除

 

因此我們一樣可以在global.js加上

$(document).ready(function() {
	$.ajaxSetup({
		error: (XMLHttpRequest, textStatus, errorThrown) {
			alert(XMLHttpRequest.responseText);
		}
	});
});

 

這樣開發階段當錯誤發生的時候我們可以比較容易的debug找出問題出在哪

而當想要看其他資訊, 只要去修改該函數就可以

 

上線後就把那段mark起來, 這樣使用者也不會看到他不該看到的東西

而發現我們程式出錯了

 

從頭到尾修改一個地方就搞定

===========================================================================================

4. 不要讓使用者莫名其妙的submit表單

其實這是在用AutoPostBack時代比較容易發生的事情, 輸入完某個Textbox莫名其妙很順手的點enter

接著就PostBack了  超開心

 

要避免這種情形一樣可以加入

$(':text,:password').keypress(function () {
        return !(event && event.keyCode == 13);
});

直接把enter卡死,  什麼事情都不會發生

 

當然要寫得更User Friendly可以寫成點enter之後自動focus下一個input

不過我通常直接卡死,  省事又方便(挖鼻孔)

 

===========================================================================================

5. 自動幫自己的Input加上title

一般來說後台我的html習慣會長這樣  <div><h5>姓名 : </h5><input type='text' id='txtName' /> </div>

 

有的時候我會希望在input裡面有一個title屬性標示說這個input代表的意思是姓名

可是我又很懶得一個一個input去加上那個屬性

 

所以又寫了一隻程式放在global.js

$('h5').each(function () {
        var $this = $(this);
        var title = $this.text();
        if (title && title.length > 0)
            $this.next('input,select,textarea,div').attr('title', $.trim(title.replace(/[::]/gi, '')));
    });

 

當然假如希望判斷嚴謹一點,  可以寫成$('div > h5', '#editArea').each 之類的寫法

不過大致上的功能就是

找出h5, 假如他有值, 找出他後面是不是有input,

假如有, 就把值放進title而已

 

 

一般來說寫程式盡量維持Dry原則

Dont Repeat YouSelf,

 

不過對我來說就是懶人原則,  可以不要重複寫的程式碼就不想重複寫

就分享了幾個我比較常用的global函式

 

在這高手如雲的點部落

無疑是野人獻曝了

 

而請前輩指點一番

 

--

本文可能有理解錯誤  或不盡不實的地方

請路過的前輩不要客氣  用力打醒

這會是我們成長的主要養分