茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1670941 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
Yomi&Kagura_00023.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2010/3/31 11:40:14
很多地方都有提到jQuery-Validation的『remote』!
例如:
 remote: {
    url: "ajax/validateUserName.action",     //後台處理程序
    type: "post",               //數據發送方式
    dataType: "json",           //接受數據格式   
    data: {                     //要傳遞的數據,默認已傳遞應用此規則的表單項
        email: function() {
            return $("#email").val();
        }
    }

注意:remote是遠程驗證:比如註冊驗證用戶名是否已被註冊,返回值只能是true(驗證成功)或false(驗證失敗)。 

可是,那個『dataType: "json"』雖然已經成為標準了,但無緣無故(真有這麼大量的資料要傳輸,要用到json!?)為啥要去用她!?

而且,大多數的範例,都不是以php為基礎所寫,頂多就是像上面一樣有提到『返回值只能是true(驗證成功)或false(驗證失敗)』。
但這裡的返回值是return嗎?當然不是!web身為stateless的範本,當然沒啥return可以用!
所以,這裡要用echo!

另外,如果你有特殊的資料要傳遞,要怎麼辦呢?
大家的範例都很一致的告訴你用data來傳資料進去!
這個更好笑,如果走get method的話,本來的資料欄位jQuery名稱就會自己幫我們帶過去了!
那一堆範例又在給妳個
email: function() {return ("#email").val();}

是在幹啥呢!?根本是耍寶!
這裡的用法,應該是要把你要傳入的資料更名!
簡單的說,就是讓你的後台可以用同一個變數名稱接前台各種資料欄位!
大家看看後面的範例,應該就懂了,不管是cycle_check_envelopes_01或是cycle_check_pages_01冷日都用「number」這個變數名傳給後端的Ajax程式『testAjaxValidator.php』接,也就是說,後端的php只要去($_REQUEST["number"])就好啦!

最後,還有一個慘痛經驗要告訴大家。
本來冷日就是不想用『dataType: "json"』而開啟這一連串測試。
所以冷日本來很直覺得相信其他網站改用「dataType: "html"」,導致一切悲劇的開始!
反正,後來經測試,不管用Get Method或是Post Method,那個dataType都可以不用給(也不要給,反而容易出亂子)就可以一切正常運作!

來看看冷日的範例吧。
前端JS:
<script type="text/javascript">
//$.validator.setDefaults({ debug: true });
$(document).ready(function() {
	$("#FucoCheckEditForm").validate({		//別忘了FormName要對應ㄚ!
//	  debug	: true , 
	  rules	: {
		cycle_check_envelopes_01	: {
			required	: true , 
			remote: {
			    url: "/test/testAjaxValidator.php",     //後台處理程序
			    type: "POST",               //數據發送方式
			    cache: false,
//			    dataType: "html",           //接受數據格式
			    data: {                     //要傳遞的數據
			        number: function() {
			            return $("#cycle_check_envelopes_01").val();
			        }
			    }
			}
		},
		cycle_check_pages_01	: {
			required	: true , 
			remote: {
			    url: "/test/testAjaxValidator.php",     //後台處理程序
			    type: "POST",               //數據發送方式
			    cache: false,
//			    dataType: "html",           //接受數據格式
			    data: {                     //要傳遞的數據
			        number: function() {
			            return $("#cycle_check_pages_01").val();
			        }
			    }
			}
		}
	  },
	  submitHandler: function() {
	  	alert("檢查完成,可以送出!");
//		this.submit();
	  }
	});
	$(".cancel").click(function() {
		validator.resetForm();
	});
});
</script>


後端php:
<?php
$request = intval($_REQUEST["number"]);
//sleep(2);//這是給那些Loading Image作測試用低
//usleep(150000);//這是給那些Loading Image作測試用低
$valid = 'false';
if ( ($request % 2) == 0 ) {
	$valid = 'true';
}
echo $valid;
?>


有沒有簡單易懂ㄚ,下課!
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|