作者 主題: 請教會用xajax的朋友  (閱讀 30956 次)

0 會員 與 1 訪客 正在閱讀本文。

ricky

  • 實習板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
請教會用xajax的朋友
« 回覆 #30 於: 2007-06-12 12:06 »
引述: "micmic3"
引述: "ricky"
您的問題應該找Yahoo UI這類Client Side的JavaScript函式庫。

我個人覺得上述的是限制級.....新手不宜@.@
 如果 HTML JS PHP CSS 都還是半調子...用 Yahoo UI 或 EXT ,JQUERY
PROTOTYPE 頭會更大....初學者不要一步登天

這邊只是舉例啦
很多人還是搞不清楚AJAX到底在做啥,
總覺得學會AJAX就可以搞出一個美美的UI介面,有時還真的有點無言。
總之
要AJAX -> XAjax,SAjax
要UI -> Yahoo UI,....
不過看到半調子或是新手不宜,說真的有點不太認同就是了
畢竟用PHP寫Web程式,除了PHP得熟,相對的HTML,JS,CSS多少都得要有一定程度的了解。
初學者還是得強迫自己去了解這些東西,prototype對於寫程式的人更是基礎中的基礎,如果連prototype都看不懂,連發問都會有問題了。
問一堆不知所以然的東西
就如同
引用
當我塞職addAssign 到html tag那裡時 , 假若是
像select option 這類以陣列方式的該如何處理呢

可是如果實際去看過他的prototype
上說得很清楚
引用
addAssign(string $sTarget, string $sAttribute, string $sData)
$sTarget (string): contains the id of an HTML element
$sAttribute (string): the part of the element you wish to modify ("innerHTML", "value", etc.)
$sData (string): the data you want to set the attribute to

$sTarget -> 一個HTML元件的id值
$sAttribute -> 這個元件的你想要修改他(一部分)附加功能
$sData -> 你想要指定給他的值

所以照樓主的問題,
$sTarget可以是一個div的id
$sAttribute就是這個div的innerHTML
$sData不用說就是那個select該填入的東西

但是如果一個Web程式開發者對於HTML不熟,對javascript不熟
div做什麼用->不知
對javascript不熟,為何$sAttribute得指定innerHTML->不知
對HTML不熟->要如何塞入一段Select標籤的HTML,不知
他還該學習AJAX嗎?
因為都不熟,所以就不要學AJAX了。
因為Javascript不熟,所以前端的UI別弄了。
因為PHP一知半解,所以PHP也別搞了。
所以結論就是,用嘴寫程式吧,把需求講出來,花點錢,自然有人幫你搞定。
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

godisgood

  • 憂鬱的高中生
  • ***
  • 文章數: 180
    • 檢視個人資料
請教會用xajax的朋友
« 回覆 #31 於: 2007-06-13 12:29 »
我先在此感謝大家的回應 , 我想我會先把code貼上來

但像我看了他的一些文件 , 像我在google找了有關

xajax loading效果的東西 , 他說xajax 的 javascript

有提供了loading function , 我用了後 , 然後php那一端

卻是有用sleep(3); 睡3秒 , 那這樣其實好像沒太大意義

因為他並不是真的捉程式跑的時間囉 , 只是要達到此效果

而以囉

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
請教會用xajax的朋友
« 回覆 #32 於: 2007-06-13 17:41 »
引述: "godisgood"
我先在此感謝大家的回應 , 我想我會先把code貼上來
但像我看了他的一些文件 , 像我在google找了有關
xajax loading效果的東西 , 他說xajax 的 javascript
有提供了loading function , 我用了後 , 然後php那一端
卻是有用sleep(3); 睡3秒 , 那這樣其實好像沒太大意義
因為他並不是真的捉程式跑的時間囉 , 只是要達到此效果
而以囉


這樣看起來你還是完全不了解那個 loading 的作法跟用途,更不知道那個 sleep(3) 是要幹嘛的,竟然能夠說出『他並不是真的抓程式跑的時間』這種話...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

ricky

  • 實習板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
請教會用xajax的朋友
« 回覆 #33 於: 2007-06-13 18:38 »
所以我才會說
SourceCode多看看
可是有些人就是SourceCode不看
去看某些人寫的亂七八糟程式
這還不打緊
看了亂七八糟程式之後還能弄出個亂七八糟的結論
如同某些記者看完亂七八糟的bbs留言寫出亂七八糟的獨家
什麼時候xajax有提供Loading功能了,
為啥我翻了半天的文件,SourceCode看了又看都沒看到
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

godisgood

  • 憂鬱的高中生
  • ***
  • 文章數: 180
    • 檢視個人資料
請教會用xajax的朋友
« 回覆 #34 於: 2007-06-14 06:35 »
謝謝大家熱烈的指導 , 我想我是不該一開始就用

什麼一堆framework , 而是要先明白XMLRequest

我想在這裡再說一次想法 , 若有錯 , 也請大家多多指教

我想主要是javascript這裡的技術 , ajax跟php跟本沒

太大關係 , 在我自己又看有一扁ajax入門的網站google 找的

發現其實php只是收值 , javascript用關鍵的東西XMLHttpRequest

去和Server請求溝通後 , 此時就是等候Server side的回應 , 但此時

網頁不會被更新跳動 , 使用者還可以繼續使用 , 或拉動網頁做其他動作

當Server side回報回來時 XMLHttpRequest裡會有回報訓息 , 我們就

可以在之前所設定的onreadychange指定的function裡用requestText

或用requestXML來處理Server side回來的值 , 若回傳xml就在用javascript

處理用DOM之類去做處理 , 是不是這樣呢 , 若有錯再請指教

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
請教會用xajax的朋友
« 回覆 #35 於: 2007-06-14 09:06 »

看來真相大白了
本篇文章轉至網頁設計版

感謝諸多版友的討論
個人認為這個討論串在某方面還蠻有參考價值的

--

這裡順道奉勸各位新手
酷!學園是猛獸區
但是敢斬釘截鐵的去指正一樣事
背後一定有其原因
不要急著反抗,好好去思考,對你才是好的

godisgood

  • 憂鬱的高中生
  • ***
  • 文章數: 180
    • 檢視個人資料
請教會用xajax的朋友
« 回覆 #36 於: 2007-06-14 10:00 »
嗯 , 大家指正的很不錯 , 我太弱了

不過我會反復一直看的 , 總之就是學囉

我也是初學ajax的人 , 之前可能太習灌於

傳統那種form post方式

ricky

  • 實習板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
請教會用xajax的朋友
« 回覆 #37 於: 2007-06-14 10:52 »
終於有進入狀況了
AJAX看似神奇,實際應用上並沒有想像中的神奇拉。
AJAX的精神,其實都環繞在第一個字母A(Asynchronous),非同步。
傳統Web程式採用的方式
Client發出請求 -> 等待Server端回應 -> 取得Server端回應 -> 更新頁面內容。
在這過程之中,從Client發出請求一直到更新頁面內容,User能做的事情,除了看右上角飄阿飄的微軟國旗,就只有等待。
然而自從XML越來越風行後W3C乾脆就把XMLHttpRequest納入標準,方便網頁開發者用跟Server端交換XML的資料。
XMLHttpRequest特別的地方在於,他是背景處理HTTP的請求。
簡單的說就是XMLHttpRequest在處理HTTP請求時,並不會中斷目前使用者操作瀏覽器。
使用者依舊可以快樂的操作瀏覽器。

以上講的很籠統,硬要說AJAX跟傳統Web的差異,除了非同步的傳輸之外,
最大的差就在Web傳回的東西是"執行結果",AJAX傳回的東西是"資料"(經XML格式化的資料)。
執行結果跟資料的差異在於執行結果就是"結果",沒辦法拿來再分析利用,而資料則是可以再利用的東西。
寫到這,應該有人會看的更模糊。沒關係我們弄個實際例子。

就以最近我在弄的聊天室做例子。

聊天室強調的就是要即時回應。
當某個使用者發出一段訊息,要能夠即時的把訊息傳遞給其他聊天室的成員。
可是以HTTP協定的架構,Server端是無法主動將訊息丟給Client端。
所以在設計上,Client端必須每隔一段時間就向Server詢問,取得最新的聊天內容。
可是這樣一來會有個大問題,想想如果您打字比較慢,打到一半,畫面就被重新refresh
剛剛辛辛苦苦打的字就這樣消失了,這可是個嚴重的大問題,這樣怎麼能在聊天室裡把到妹呢...我是說交朋友,差點就露底了。
所以"維持目前使用者的操作環境"是第一要務,也就是說你更新畫面的動作不能影響到目前使用者的操作。
這時候就該讓AJAX上場了。
想想,我快樂的打著字,AJAX在背景裡偷偷去跟Server要資料,這是多麼完美的組合。

架構就變成了

[讀取聊天內容]
使用Javascript的setTimeout()函數,每隔1秒鐘就觸發一次,透過AJAX去跟Server取得聊天室的內容,然後再將取得的資料使用Javascript貼到某個textarea,或是使用某個div的innerHTML屬性去更新他的內容。

[發送聊天訊息]
當User按下送出的"按鈕",就把我的"聊天訊息",透過AJAX送給Server端,Server再去處理這堆訊息存入資料庫中。

User只要等待1秒鐘,當Timeout觸發後就會透過AJAX去跟Server要資料,同時更新textarea或是div的內容,就可以看到剛剛自己的留言了。

上面只是一個很簡單的架構,但是其中牽扯到的除了你得會Server端的程式撰寫(PHP,ASP,...),還得具備一定程度的Javascript能力(不會Javascript,AJAX的J怎麼搞),同時對於HTML也得要看得懂(不然什麼是textarea,什麼是div都不知,怎麼完下去。)。

如果你想要搞AJAX,基本具備的條件
1.Server Side的程式撰寫能力(PHP,ASP,ROR,...)
2.XML要看得懂(不然怎麼debug)
3.Javascript要懂(這個如果不懂,就沒搞頭了)
4.HTML要懂(這是寫Web程式的基本功)
5.CSS要懂(不然你怎麼跟美工溝通)

如果您是個"新手",想要跨入AJAX,請問上面5點做到了幾個?
不管您用的是xajax,sajax還是阿貓阿狗ajax,如果上面有任何一個不懂的地方,
請充實一下自己的基本功,菜刀都還拿不穩,小心被18銅人的"好折凳"打到噴鼻血。
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
請教會用xajax的朋友
« 回覆 #38 於: 2007-06-14 11:48 »
聊天室?...
那要不要把 xml 換為 json ?...
應該可以省一點點的傳輸時間...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

ricky

  • 實習板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
請教會用xajax的朋友
« 回覆 #39 於: 2007-06-14 12:40 »
其實大部分的東西都擺在Client Side去做
Server回傳的資料也只有留言後更動的部份
如果沒有新的留言,Server Side就沒必要回應
再加上使用gzip壓縮
自己統計了一下每次呼叫大概只有幾百個byte
ajax或是json應該不會差到哪
用的順手比較重要一些
不過剛剛看了一下json
倒是個蠻好玩的東西
在Javascript的親和力上比AJAX好很多
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
請教會用xajax的朋友
« 回覆 #40 於: 2007-06-14 13:25 »
引述: "ricky"
其實大部分的東西都擺在Client Side去做
Server回傳的資料也只有留言後更動的部份
如果沒有新的留言,Server Side就沒必要回應
再加上使用gzip壓縮
自己統計了一下每次呼叫大概只有幾百個byte
ajax或是json應該不會差到哪
用的順手比較重要一些
不過剛剛看了一下json
倒是個蠻好玩的東西
在Javascript的親和力上比AJAX好很多


已聊天室來說,個人覺得一點點的容量差別,在人數快速擴充後,會差很多。
這時候我是習慣能省一byte 就省一byte的..:p..
json 跟 xml 同樣的內容的話,json 可以省下不少 xml 的 tag 空間...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

godisgood

  • 憂鬱的高中生
  • ***
  • 文章數: 180
    • 檢視個人資料
請教會用xajax的朋友
« 回覆 #41 於: 2007-06-15 10:02 »
那其實想想ajax其實就是像我們client 端可以做很多

針對事件的處發 , 去處發不同的ajax , 反正可以同時做嘛

例如聊天室可以背景訂時用timer處發一個ajax專門拿新的

留言進來 , 然後要留言時在onClick處動另一個ajax去寫入db

不知這想法對不對 , 希望不要又被罵呵哈

JonesLai

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
回覆: 請教會用xajax的朋友
« 回覆 #42 於: 2008-07-16 11:41 »
HTML+ScriptRequest <-- TEXT <-- CGI
HTML+ScriptRequest <-- XML <-- CGI
HTML+ScriptRequest <-- JSON <-- CGI

這樣看得懂嗎?
CGI 可以是C, SHELL, C++, PHP, Perl ,,,,,等「在你爽」的語言工具。
ScriptRequest 一樣是Javascript, M$-JS, VBS ,,, 等瀏覽器支援可以提出HTMLRequest的「在你爽」語言工具。

TEXT, XML, JSON 只要能夠解析也是「在你爽」的資料格式,以下統稱XDATA。
圖看起來會比較像下面這樣:
代碼: [選擇]
<瀏覽器執行>                                 <伺服器執行>
呈現層(HTML+ScriptRequest)-->POST/GET--> CGI
                                               +  --> DB/FILE/(dev/null)...「在你爽」儲存媒介
                                               +   -- 「在你爽」處理程序
                                               +  <-- 「在你爽」運算結果輸出
                            <-- XDATA <--  CGI


AJAX架構還有什麼疑問嗎?
« 上次編輯: 2008-07-16 11:57 由 JonesLai »

廉價勞工

  • 活潑的大學生
  • ***
  • 文章數: 213
    • 檢視個人資料
回覆: 請教會用xajax的朋友
« 回覆 #43 於: 2008-07-18 14:14 »
我想他們應該在 一年前 就爽完了  :o
錢少、事多、離家遠…
位低、權輕、責任重…

JonesLai

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
回覆: 請教會用xajax的朋友
« 回覆 #44 於: 2008-07-18 14:20 »
 :o ... 哈~慢了