close

大爺最近在搞的案子嘗試著用jquery來設計前端操作的部份

雖然大爺接觸的算是晚了…

不過之前有寫過CSS和Javascript所以上手還算滿快的

真的還不錯用…比javascript好用很多

不過在剛開始接觸的時候

也是會遇到一些奇奇怪怪的問題

大爺就提出來和大家分享一下解決的方式囉

 

問題1.關於CSS排版的問題

哈…這不是jquery的問題…這不是jquery的問題

好了…別在地上打滾了…我知道

不過還是跟網頁有關…那大爺就提出來看看好了

 

同一個ul li項目在排版時…會面臨到各家瀏覽器設定上的不同

而造成畫面呈現上不一樣

尤其大爺要將ul li和table對齊…那可真是難上加難

除了個家的瀏覽器呈現出來會不同之外

連同家的瀏覽器在不同的版本或是畫素上呈現的也會不同

 

而大爺的程式又可以動態的新增、刪除筆數

在排版上又更煩人了

所以用ul li真的要很注意才行

 

問題2.關於live()這個方法的問題

這真的是一個很好用的方法哦…

尤其在動態新增單筆資料的時候

一般來說在新增資料時也會有那筆資料相關的滑鼠、鍵盤的事件操作

這時候live()這個方法就很有用了

 

大爺是用clone()方法先來複製單筆資料

再用live()方法來控制上面的滑鼠、鍵盤的事件操作項目

這樣就能各別的去控制每一筆啦

 

只是live()這個方法對在非IE的瀏覽器上面都能運作的很好

但在IE下執行就會失效 @@

沒辨法讀取像是select的事件

(當然還有其他的一些事件…請問問google大神吧)

 

但有個解決的方式就是livequery這個外掛

只要將原本的live改成livequery就能在IE和非IE的瀏覽器上面運作了

這也是花了大爺不少的時間來解決 = ="

 

問題3:關於Jquery AJAX資料傳送的問題

根據官方的文件說明

AJAX可以傳遞「字串」和「map」這種格式的資料傳遞給伺服器的程式

卻沒說明能不能傳遞「物件」和「陣列」還有JSON

大爺一直想把JSON傳過去

 

有些朋友告訴大爺AJAX可以傳遞JSON

不過那是從伺服器才能傳JSON回來

 

從client端這邊是沒辨法

至少大爺試了很久

不行就是不行

如果有那位好心的高手客倌能好心的指點一下大爺

大爺真的會很感激哩!

 

所以說這可是真的考倒大爺了

搞了大爺整整2天的時間在解決怎麼將JSON 物件透過AJAX來傳遞

後來大爺真的放棄了

可是大爺的資料是動態的新增儲存在陣列上

程式都寫到這了

要改成儲存成字串會很麻煩

 

大爺找了很久

終於找到怎麼用jquery 的AJAX來傳遞陣列給伺服器了

var dataString=[["大爺1","小子1","小妞1"],"大爺","小子","小妞"];

$.ajax({
         url: 'testphp.php',
         cache: false,
         dataType: 'html',
         type:'GET',                
         data: dataString,//<--這樣就能傳遞陣列了,很簡單吧,但真的累死大爺了@@

         error:function(){
           alert('Ajax request 發生錯誤');
         },
         success: function(res) {
            alert('Ajax success!');           
    });

 

這邊有一點的一定要提一下,在php檔案裡要用$_REQUEST這個全域變數來接收JS端傳來的內容,大爺試過用$_POST或$_GET裡面都是空的

至於為什麼嗎,我應該有查過,不過忘了 = ="

問題4:javascript的陣列問題

說到陣列…大爺也才想到這也是令大爺頭痛很久的問題

javascript「沒有動態新增二維陣列」的方法

或許有…但大爺就是沒看到要怎麼宣告 = ="

javscript的二維是假二維

就是在一維的項目之中再宣告個一維陣列

但不符合大爺的需求

因為大爺的資料都是動態擴充的

 

於是大爺找了很久…也想了很久

後來沒辨法…才想到只好把二維陣列轉成一維陣列的方式來模擬吧

至於轉換的方式就請參考資料結構的書吧

不是很難…自已想也行啦。

 

以上就是大爺在這次的案子中所遭遇到的問題

解決了這次的問題之後

大爺的功力又更上一層了…呵呵 ^^

arrow
arrow
    全站熱搜

    大爺 發表在 痞客邦 留言(0) 人氣()