作者Peruheru (還在想)
看板Ajax
標題Re: [問題] .getForm().submit()?
時間Thu Dec 24 05:04:30 2009
※ 引述《skywillnosky (Alfred)》之銘言:
: 我想順便問一下
: AJAX 可以跟Jquery共用嗎?
問題這樣問,jquery會哭的
就像買一台iphone問它支不支援打電話一樣
prototype是一個程式庫
jQuery是一個程式庫
extjs也是一個程式庫
我其他兩個沒碰過,就只碰過jQuery
只是能肯定告訴妳
沒有任何程式庫會"不相容ajax"
: 要如何擷取AJAX的ITEM的值
: 放到Jquery?
: 這是改過的程式...
: <head>
: <script type="text/javascript" src="adapter/ext/ext-base.js"></script>
: <script type="text/javascript" src="ext-all.js"></script>
: <script type="text/javascript" src="jquery-1.3.2.js"></script>
: <script type="text/javascript" >
暫且在這邊做個記號吧
: Ext.onReady(function(){
: Ext.QuickTips.init();
: Ext.form.Field.prototype.msgTarget = 'side';
: Ext.form.Field.prototype.align = 'center';
: var bd = Ext.getBody();
: var create_form = new Ext.FormPanel({
: labelWidth: 75,
: frame:true,
: title: '填寫會員資料',
: url: '_register.php',
: bodyStyle:'padding:5px 5px 0',
: width: 400,
: defaults: {width: 230},
: defaultType: 'textfield',
: items: [{
: fieldLabel: '帳號',
: name: 'account',
: allowBlank:false
: },
: ...
: {
: fieldLabel: '手機號碼',
: name: 'cellphone',
: inputType : "password",
: allowBlank:false
: }
: ],
: buttons:
: [
: {
: text: '送出',
: handler: senddata
: },
: {
: text: '重設',
: handler: function(){
: create_form.getForm().reset();
: }
: }
: ]
: });
: function senddata() {
: if (create_form.getForm().isValid())
: {
: handler: search_contents()
: } else {
: Ext.MessageBox.alert('狀態', '不能為空的');
: }
: }
: create_form.render(document.body);
: });
這邊也做個記號
: function search_contents(){
: $(document).ready(function() {
: $.post('register.php',{
: a: $("#account").val(),
: ...
: c: $("#cellphone").val()},
: function(txt){ $('div.result').html(txt);});
: });
: }
: </script>
: </head>
: <body>
: <div id="create_form" ></div>
: <?php
: echo '$_POST[pass] = '.$_POST['pass'].'<br>';
: if(strcmp($_POST['pass'], $_POST['pass_again']) == 0 && $_POST['pass'] !=
: NULL)
: {
: $a = $_POST['account'];
: $p = $_POST['pass'];
: $pg = $_POST['pass_again'];
: $n = $_POST['name'];
: $i = $_POST['id'];
: $d = $_POST['date'];
: $c = $_POST['cellphone'];
: ......
: echo '您的會員編號:'.$in.'<br>';
: }
: else if(strcmp($_POST['pass'], $_POST['pass_again']) != 0 && $_POST['pass']
: != NULL)
: {
: echo '帳號輸入不一致<br>';
: }
: ?>
: <br/>輸入之文章:
: <div class="contents"></div>
: <br/>取代後之文章:<div class="result" id="result"></div><br/>
: <div class="contents"></div>
: <br/>取代後之文章:<div class="result" id="result"></div><br/>
: //********************************************************************//
: 我這樣寫跑起來沒反應耶
: 是因為ajax 跟 jquery不相容嗎?
我是不懂extjs的寫法啦
也沒去看完整個程式
就我稍微看一下所看到的
一、
程式有兩個開始點,一個是extjs的ready方法,另一個則是jquery的ready方法
如果這是"文件就緒時馬上執行的程式片段"
同樣使用同一個程式庫時或許就算了
(jquery如果找到兩份ready的程式碼,也同樣能夠完成裡面的全部內容)
問題是你用不同的程式庫同時寫了兩次
而我不認為這是妥當或必要的做法
就算出了問題我也不覺得奇怪
二、
第二次的ready方法(屬於jQuery的那一個)被包在一個function內等著被呼叫
這或許讓兩個ready方法不會有賽跑的情況
但問題接著冒出來
ready方法是一個事件的方法,發生在某物準備完成時(這邊指網頁內文)
而$(document).ready(fn) 所做的只是事先連結裡面的fn程式
以便在完成時觸發fn
當妳呼叫那個包著ready方法的function時
它只幫妳把fn連結到網頁完成的事件裡
"並不會"去執行fn
但是它被連結後,整個網頁完成已經是過去式了
就像送人家一張日期是三年前的機票,還問人家怎麼都不去搭
太 遲 了 !
所以ready裡面的內容一行都不會執行
BUT!
或許妳呼叫他時,還是有妳看不到的動作
那就是
一直繫結程式到一個不會再發生的事件上
妳呼叫一次他就綁定一次
只是反正不會執行,所以沒感覺
我有看到的就這兩個吧
其他的我要不就不熟,要不就不確定
這種程式庫的其中一個方法妳不能用
妳應該先想到是不是自己寫錯了
而不是質疑人家不支援他自己做的方法吧
如果不支援,人家敢在官網上寫出post方法給妳看嗎XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.234.200
→ Peruheru:對了,拙見或許有各種錯誤,請多指教,或許也能學到更多 12/24 05:21
推 skywillnosky:講的很好呀...不推不行 12/24 08:31
→ skywillnosky:只是我也是新手...可能還要在加油:D 12/24 08:32
→ skywillnosky:話說原PO還真早起= = 12/24 08:32
推 skywillnosky:那我要怎麼改才能擷取到item的值勒 還有之前有位大大 12/24 08:37
→ skywillnosky:會傳一整個頁面用傳統的form.submit也不是很了解 12/24 08:39
→ adahsu:jQuery 和 ExtJS 的搭配方式也有問題... 如果要用 jQuery 12/24 10:50
→ adahsu:作為 ExtJS 底層 ajax 機制的話要使用對應的 adapter 轉接, 12/24 10:50
→ adahsu:目前的寫法會變成兩個獨立 framework 並可能相互干擾... 12/24 10:58
推 skywillnosky:所以正常應該都是jquery作為底層比較恰當? 12/25 05:22
→ adahsu:我以為這是需求確認的問題... 12/25 12:22
推 skywillnosky:...什~麼意思?= = 12/25 19:23
→ TonyQ:就是說你應該要自己判斷你比較能掌握哪個lib , 想要挑選哪個 12/26 00:11
→ TonyQ:工具來用 , 沒有一定用 jQuery 比較恰當 一切看你自己需求 12/26 00:12