對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2010/3/31 11:40:14
很多地方都有提到jQuery-Validation的『remote』!
例如:
可是,那個『dataType: "json"』雖然已經成為標準了,但無緣無故(真有這麼大量的資料要傳輸,要用到json!?)為啥要去用她!?
而且,大多數的範例,都不是以php為基礎所寫,頂多就是像上面一樣有提到『返回值只能是true(驗證成功)或false(驗證失敗)』。
但這裡的返回值是return嗎?當然不是!web身為stateless的範本,當然沒啥return可以用!
所以,這裡要用echo!
另外,如果你有特殊的資料要傳遞,要怎麼辦呢?
大家的範例都很一致的告訴你用data來傳資料進去!
這個更好笑,如果走get method的話,本來的資料欄位jQuery名稱就會自己幫我們帶過去了!
那一堆範例又在給妳個
是在幹啥呢!?根本是耍寶!
這裡的用法,應該是要把你要傳入的資料更名!
簡單的說,就是讓你的後台可以用同一個變數名稱接前台各種資料欄位!
大家看看後面的範例,應該就懂了,不管是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:
後端php:
有沒有簡單易懂ㄚ,下課!
例如:
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;
?>
有沒有簡單易懂ㄚ,下課!