¾«Í¨ Grails: ʹÓà Ajax ʵÏÖ¶à¶Ô¶à¹ØÏµ
ÔÚ Web Ó¦ÓóÌÐòÖУ¬¶à¶Ô¶à£¨m:m£©¹ØÏµºÜÄÑ´¦Àí¡£ÔÚ ¾«Í¨ Grails ϵÁеÄÕâÒ»ÆÚÎÄÕÂÖУ¬Scott Davis ½«ÏòÄúչʾÈçºÎÔÚ Grails Öгɹ¦ÊµÏÖ m:m ¹ØÏµ¡£Á˽âÈçºÎͨ¹ý Grails ¶ÔÏó¹ØÏµÓ³É䣨Grails Object Relational Mapping£¬GORM£©API ºÍºó¶ËÊý¾Ý¿â´¦Àí¶à¶Ô¶à¹ØÏµ¡£Ñ§Ï°ÈçºÎʹÓà Ajax£¨Asynchronous JavaScript + XML£©Á÷Ïß»¯Óû§½çÃæ¡£
Èí¼þ¿ª·¢¾ÍÊÇʹÓôúÂëÀ´Ä£ÄâÏÖʵÊÀ½ç¡£ÀýÈ磬Êé¼®¶¼ÓÐ×÷Õߺͳö°æÉÌ¡£ÔÚ Grails Ó¦ÓóÌÐòÖУ¬ÒªÎªÃ¿¸öÔªËØ´´½¨Ò»¸öÓòÀà¡£GORM Ϊÿ¸öÀà´´½¨¶ÔÓ¦µÄÊý¾Ý¿â±í£¬´î½¨¹¦ÄÜ£¨scaffolding£©Ìṩ»ù±¾µÄ Create/Retrieve/Update/Delete (CRUD) Web ½çÃæ¡£
½ÓÏÂÀ´¶¨ÒåÕâЩÀàÖ®¼äµÄ¹ØÏµ¡£Ò»¸ö³ö°æÉÌͨ³£»á³ö°æ¶à²¿Í¼Ê飬Òò´Ë³ö°æÉ̺ÍËûµÄͼÊéÖ®¼äµÄ¹ØÏµ¾ÍÊÇÒ»¸ö¼òµ¥µÄÒ»¶Ô¶à£¨1:m£©¹ØÏµ£ºÒ»¸ö Publisher ³ö°æ¶à¸ö Book¡£Í¨¹ýÔÚ Publisher ÀàÖмÓÈë static hasMany = [books:Book]£¬´´½¨ 1:m ¹ØÏµ¡£ÔÚ Book ÀàÖзÅÈë static belongsTo = Publisher£¬¿ÉÒÔÏò¹ØÏµÌí¼ÓÁíÒ»¸ö·½Ãæ —— ¼¶Áª¸üкÍɾ³ý¡£Èç¹ûɾ³ýÒ»¸ö Publisher£¬ËùÓжÔÓ¦µÄ Book Ò²»á±»É¾³ý¡£
ºÜÈÝÒ×ÔڵײãÊý¾Ý¿âÖÐÄ£Äâ 1:m ¹ØÏµÐÍ¡£Ã¿¸ö±íÓÐÒ»¸öÓÃ×÷Ö÷¼üµÄ id ×ֶΡ£µ± GORM Ïò book ±íÌí¼ÓÒ»¸ö publisher_id ×Ö¶Îʱ£¬¾ÍÔÚÁ½¸ö±íÖ®¼ä½¨Á¢ÁËÒ»¸ö 1:m ¹ØÏµ¡£ÔÚǰ¶Ë£¬Grails Ò²Äܹ»ºÜºÃµØ´¦Àí 1:m ¹ØÏµ¡£´´½¨Ò»¸öРBook ʱ£¬×Ô¶¯Éú³ÉµÄ£¨´î½¨¶ø³É£©HTML ±íµ¥Ìṩһ¸öÏÂÀ×éºÏ¿ò£¬½«ÄúµÄÑ¡ÔñÏÞÖÆÔÚÏÖÓÐµÄ Publisher ÁбíÖС£×Ô±¾ÏµÁÐµÄ µÚһƪÎÄÕ ÒÔÀ´£¬ÎÒÃÇÒѾչʾÁËÐí¶à 1:m ¹ØÏµµÄʾÀý¡£
ÏÖÔÚÀ´¿´¿´Ò»¸öÉÔ΢¸´ÔÓһЩµÄ¹ØÏµ — ¶à¶Ô¶à£¨m:m£©¹ØÏµ¡£Óë Book ºÍ Publisher Ö®¼äµÄ¹ØÏµÏà±È£¬Ä£Äâ Book Óë Author Ö®¼äµÄ¹ØÏµÒª¸´Ôӵöࡣһ²¿Í¼Êé¿ÉÒÔÓжà¸ö×÷Õߣ¬Ò»¸ö×÷ÕßÒ²¿ÉÒÔ±àд¶à²¿Í¼Êé¡£ÕâÊÇÒ»¸öµäÐ굀 m:m ¹ØÏµ¡£ÔÚÕæÊµÊÀ½çÖУ¬m:m ¹ØÏµºÜ³£¼û¡£Ò»¸öÈË¿ÉÒÔÓжà¸ö֧ƱÕʺţ¬Ò»¸ö֧ƱÕʺÅÒ²¿ÉÒÔÓɶà¸öÈËÀ´¹ÜÀí¡£Ò»¸ö¹ËÎÊ¿ÉÒÔΪ¶à¸öÏîÄ¿¹¤×÷£¬Ò»¸öÏîĿҲ¿ÉÒÔÓжà¸ö¹ËÎÊ¡£±¾ÎĽ«ÏòÄúչʾÈçºÎʹÓà Grails ʵÏÖ m:m ¹ØÏµ£¬ÎÒÃÇÔÚ±¾ÏµÁÐÖпª·¢µÄ trip-planner Ó¦ÓóÌÐòÉϽøÐй¹½¨¡£ÔÚÌÖÂÛ trip-planner Ó¦ÓóÌÐò֮ǰ£¬ÎÒ»¹Ïë̸̸ͼÊéµÄÀý×Ó£¬ÒÔ°ïÖúÄúÀí½âÒ»¸öÒªµã¡£
µÚÈý¸öÀà
ÔÚÊý¾Ý¿âÖУ¬ÓÃÈý¸ö±í±íʾ m:m ¹ØÏµ£ºÇ°Á½¸ö±íÄúÒѾ֪µÀÁË£¨Book ºÍ Author£©£¬µÚÈý¸öÊÇÒ»¸öÁ¬½Ó±í£¨BookAuthor£©¡£GORM Ïò BookAuthor Á¬½Ó±íÌí¼Ó book_id ºÍ author_id£
Ïà¹ØÎĵµ£º
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<input type="button" onclick="test();" value="Ìá½»"/>
<script type="text/javascript">
function test(){
var valid = {
& ......
½ñÌì¸ãÁËÎÒÈýËĸöСʱµÄÎÊÌ⣬ÖÕÓÚÕÒµ½½â¾ö·½°¸ÁË¡£¹þ¹þ¡£
ÔÚAjax¿ª·¢ÖУ¬»áÓöµ½ä¯ÀÀÆ÷»º´æÄÚÈݵÄÎÊÌ⣬±ÈÈ磬ij¸öÔªËØ×¢²áÁËÊó±êʼþ£¨onmouseover£©£¬Ê¼þ´¥·¢ºó»áͨ¹ýxmlhttprequestµ½·þÎñÆ÷»ñÈ¡ÄÚÈÝ£¬ÔÚ²»Ë¢ÐÂÒ³ÃæµÄÇé¿öÏ£¬ä¯ÀÀÆ÷»á»º´æµÚÒ»´ÎÇëÇóµÄÄÚÈÝ£¬·þÎñ¶Ë¸üкóä¯ÀÀÆ÷ÈÔÈ»ÏÔʾµÚÒ»´ÎµÄÄÚÈÝ¡£
ͨ³££¬ÕâÖÖÇëÇó¶ ......
Ò»¡¢¸ÅÊö
¿¼ÂÇHtml±¾Éí²»´ø¶¨Ê±Ë¢ÐÂÒ³ÃæµÄ¿Ø¼þ£¬ÇÒ²»¿¼ÂÇʹÓõÚÈý·½¿Ø¼þ£»Òò´Ë¿¼ÂÇʹÓÃJavascriptÖеÄsetTimeout+xmlhttpÀ´ÊµÏÖ¶¨Ê±¸üÐÂÒ³ÃæÖв¿·ÖÄÚÈÝ£¬´ËʵÏÖÔÚIE6.0¼°ÒÔÉϰ汾²âÊÔͨ¹ý£¬ÆäËûä¯ÀÀÆ÷ÔÝʱδ²âÊÔ¹ý¡£
¶þ¡¢¹¦Äܼ°Ìصã
1¡¢Javascriptͨ¹ýMicrosoftµÄMSXML¶ÔÏ󣬶¯Ì¬»ñÈ¡ºǫ́Êý¾Ý¿âÊý¾Ý£»
&n ......
<mce:script type="text/javascript"><!--
function login(){
var postURL = "http://localhost:8080/cas/simpleLogin";
var params = {
"loginUrl":$("#loginUrl").val(),
"service":$("#service").val(),
"login":$( ......
×ªÔØÓÚhttp://xzio.javaeye.com/blog/91713
×î³õ¿´µ½ajax¸Ð¾õºÃ¾ªÏ²°¡£¬²»ÓÃË¢ÐÂÈ«²¿Ò³Ã棬¾Í¿ÉÒÔ¸ü¸Ä¾Ö²¿Ò³ÃæÊý¾Ý¡£ÕæµÄºÜ·½·¨
µ«ÊÇÒÔΪ»áºÜÄÑ£¬µ«Êµ¼Ê×öÁ˲ÅÖªµÀ£¬AJAXºÜ¼òµ¥¡£ÖÁÉÙÈëÃźܼòµ¥ Èç¹ûÄã»áajaxÄǾͲ»Òª¿´ÁË¡£¸ü²»ÒªÂîÎÒ¡£±ÈÎÒÅ£µÄÈËÌ«¶àÁË
»¥ÏཻÁ÷£¬Ñ§Ï°¡£MSN:whw_dream(AT)hotmail.com
Ê×ÏÈÊÇjspÒ³ÃæºÍ ......